Сортировка в нескольких таблицах

0

Я использую такой запрос, как этот:

SELECT p.name, d.overview
FROM products AS p 
LEFT JOIN descriptions AS d ON p.DescriptionID = d.ID 
WHERE MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE) > 0 
OR MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) > 0;

Как сделать соответствующую сортировку этих результатов?

я пробовал

ORDER BY MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE) 
OR MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) DESC

Но это не помогает, потому что результат не сортируется в соответствии с их релевантностью.

Теги:
full-text-search

1 ответ

1
Лучший ответ
MATCH ... OR MATCH ...
          ^^

Это or делает это двоичным выражением. Бинарные выражения оцениваются как true или false. Поэтому вы разбираетесь, совпадают они или нет. Поскольку предложение where уже гарантирует соответствие всех строк, это не добавляет порядок.

Попробуйте упорядочить по целочисленному выражению, например суммированную релевантность:

ORDER BY
    MATCH (p.name) AGAINST ('ram' IN BOOLEAN MODE) +
    MATCH (d.overview) AGAINST ('ram' IN BOOLEAN MODE) DESC
  • 0
    О втором: Unknown column 'Relevancy' in 'where clause'
  • 0
    @Yekver: похоже, MySQL не так гибок, как я думал! Я удалю 2-ую часть.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню