MySQL Search Result - Сортировка по релевантности - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь закодировать функции релевантности базовой поисковой системы, которая выполняет поиск в базе данных веб-сайта.Давайте возьмем пример Yelp.( Прямая ссылка на страницу http://www.yelp.com/search?find_desc=chinese&ns=1&find_loc=New+York%2C+NY)

Вопрос 1

Как они определяют «лучшее соответствие»? Я предполагаю, что они ищут все записи, содержащие ключевое словохотя бы один раз, а затем сортируйте по количеству раз, когда ключевое слово появляется в заголовке / теге / описании.

Вопрос 2

Для сортировки по «Наивысший рейтинг» и «Самый рецензируемый»искать все записи, содержащие ключевое слово, затем сортировать по средним рейтингам и количеству отзывов соответственно.

Вопрос 3

Я использую CodeIgniter с MySQL и Active Records. Допустим, продукты моей таблицы ''содержит столбцы' id, имя, категории, теги, описание '.

  • Как выполнить запрос, который возвращает все строки с ключевым словом, появляющимся в одном из этих столбцов, и
  • как подсчитать, подсчитать, сколько раз ключевое слово появляется в одном из этих столбцов в запросе MySQL.

1 Ответ

2 голосов
/ 10 мая 2011

Сортировка по релевантности, особенно когда речь идет о ключевых словах / текстах, не простая задача.Когда вы имеете дело с действительно большими наборами данных, такими как Yelp, вам нужны специализированные полнотекстовые поисковые системы, такие как Sphinx http://sphinxsearch.com/

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

Если ваш набор записей невелик, то я думаю, что вы можете обойтись без довольно простого поиска релевантности, используя сложное предложение order by, которое использует LIKE

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