#php #mysql #codeigniter
#php #mysql #codeigniter
Вопрос:
Я пытаюсь закодировать функции релевантности базовой поисковой системы, которая выполняет поиск в базе данных веб-сайта. Давайте возьмем пример Yelp. (Прямая ссылка на страницу http://www.yelp.com/search?find_desc=chineseamp;ns=1amp;find_loc=New York, NY )
Вопрос 1
Как они определяют «Наилучшее соответствие»? Я предполагаю, что они ищут все записи, содержащие ключевое слово хотя бы один раз, затем сортируют по количеству раз, когда ключевое слово появляется в заголовке / теге / описании.
Вопрос 2
Для сортировки по «Наивысшему рейтингу» и «Наиболее просматриваемым» они ищут все записи, содержащие ключевое слово, затем сортируют по средним рейтингам и количеству отзывов соответственно.
Вопрос 3
Я использую CodeIgniter с MySQL и активными записями. Допустим, в моей таблице «продукты» есть столбцы «идентификатор, название, категории, теги, описание».
- Как мне выполнить запрос, который возвращает все строки с ключевым словом, появляющимся в одном из этих столбцов, и
- как мне подсчитать, подсчитайте, сколько раз ключевое слово появляется в одном из этих столбцов в запросе MySQL.
Комментарии:
Ответ №1:
Сортировка по релевантности, особенно когда речь идет о ключевых словах / текстах, — непростая задача. Когда вы имеете дело с действительно большими наборами данных, такими как Yelp, вам нужны специализированные полнотекстовые поисковые системы, такие как Sphinx http://sphinxsearch.com /
Sphinx и подобные поисковые системы позволят вам сортировать (среди прочего) ваши записи на основе количества совпадений ключевых слов в полной записи
Если ваш набор записей невелик, то я думаю, вам может сойти с рук выполнение довольно простого поиска по релевантности с помощью сложного предложения order by, которое использует LIKE
Комментарии:
1. спасибо, я думаю, я загляну в sphinx и тому подобное, когда сайт вырастет (надеюсь!). Если бы я использовал LIKE, как я могу определить количество вхождений определенного ключевого слова в 3 столбцах?
2. Я не думаю, что вы можете найти количество вхождений, но больше похоже на то, существует оно или нет, взгляните на это, это должно дать вам приблизительное представление о том, как это работает sitepoint.com/forums/mysql-182 /…