Расчет релевантности с помощью Match ... Against в запросах JOIN (MySQL)

Я пытаюсь получить релевантные результаты поиска, используя следующий запрос JOIN:

SELECT 
    `products`.`id`,
    `brands`.`name` AS `brand`,
    `products`.`name` AS `productname`,
    MATCH (`brands`.`name`) AGAINST ('somebrand someproduct' ) AS brandname_relevance
FROM
    `brands`
        INNER JOIN
    `products` ON `products`.`brand_id` = `brands`.`id`
WHERE
    MATCH (`products`.`name`) AGAINST ('somebrand someproduct' ) AS /* AS is highlighted as 'not valid input at this point' */ product_relevance
ORDER BY (brandname_relevance + product_relevance) DESC

Однако, как отмечается в коде, "AS" выделен как недопустимый в этом контексте MySQL Workbench. Запрос не выполняется.

Механизм в обеих таблицах - InnoDB, однако Версия сервера MySQL выше 5.6, и индекс FULLTEXT включен для обоих brands.name а также products.name, Пожалуйста, объясните, в чем здесь проблема.

1 ответ

Решение

Это в предложении where - переместите его вверх вместе с другими полями в вашем выборе.

SELECT 
    `products`.`id`,
    `brands`.`name` AS `brand`,
    `products`.`name` AS `productname`,
    MATCH (`brands`.`name`) AGAINST ('somebrand someproduct' ) AS brandname_relevance,
    MATCH (`products`.`name`) AGAINST ('somebrand someproduct' ) AS product_relevance
FROM
    `brands`
        INNER JOIN
    `products` ON `products`.`brand_id` = `brands`.`id`
ORDER BY (brandname_relevance + product_relevance) DESC
Другие вопросы по тегам