Придайте некоторым полям больше релевантности и сортируйте по релевантности в полнотекстовом поиске mysql - PullRequest
4 голосов
/ 22 января 2011

У меня есть два поля в таблице сообщений - post_title и post_content . Теперь я использую стандартный полнотекстовый поиск, чтобы сопоставить некоторые ключевые слова с обоими полями. Мне нужно, чтобы поле заголовка было более релевантным, чем поле контента, а не упорядочивало результаты по релевантности ...

Как бы выглядел синтаксис mysql для достижения этой цели? Я использую MySQL 5.1

1 Ответ

17 голосов
/ 23 марта 2011

Сначала создайте три индекса FULLTEXT:

* one on the title column
* one on the body column
* one on both title and body columns

Затем создайте запрос следующим образом:

SELECT field1, field2, field3, title, body,
MATCH (title) AGAINST ('word_to_search') AS rel_title,
MATCH (body) AGAINST ('word_to_search') AS rel_body
FROM table_to_use
WHERE MATCH (title,body) AGAINST ('word_to_search')
ORDER BY (rel_title*2)+(rel_body)

Это даст заголовку в 2 раза больше релевантности, чем тексту..

Это очень удобно, когда необходимо разрешить сортировку контента, например, по тегам (которые не просматриваются пользователями), поскольку позволяет настраивать результаты из-за кулис.

...