Ранжирование результатов поиска на основе появления ключевых слов - PullRequest
1 голос
/ 03 октября 2011

Я создаю функцию поиска в PHP / mySQL.

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

Мне нужно, чтобы он вернулся к дате восходящей записи, при прочих равных условиях.

В идеале я мог бы сделать это в запросе mySQL. Какие методы мне доступны?

1 Ответ

1 голос
/ 03 октября 2011

Если вы используете MyISAM, вы можете установить полнотекстовый индекс для ваших текстовых полей.

См. Этот вопрос с инструкциями: Поиск по ключевым словам с использованием PHP MySql?

Теперь вы можете сделать запрос как:

SELECT 
  MATCH(`data`) AGAINST('word1 word2 word3') AS relevance  
  , field1
  , field2
FROM table1
WHERE MATCH(`data`) AGAINST('word1 word2 word3')
ORDER BY relevance DESC

Вы можете повторить предложение MATCH AGAINST в своем выборе, где оно даст вам номер права.
Вы должны подтвердить это в вашем where предложении. Но, к счастью, вы можете использовать псевдоним в своих предложениях group by, having и order by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...