Функция поиска - PullRequest
       12

Функция поиска

1 голос
/ 27 июня 2011

Я строю простую поисковую систему.

Идея состоит в том, что он будет искать поля кода, заголовка, описания и категории.

Найти категорию и код довольно просто, так как это всего одно слово (% code%).

Однако я не уверен, как бы разбить заголовок и описание для поиска любых ключевых слов, введенных пользователем?

Есть ли у кого-нибудь хорошие методы для этого?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Учитывая небольшой объем информации:

Если вы используете хранилище MyISAM из MySQL, вы можете включить индексы FULLTEXT и использовать поиск FULLTEXT по нему;см. эту ссылку для получения дополнительной информации об этом.

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

У вас есть несколько вариантов;либо вы сами разделяете ключевые слова и ищете записи, соответствующие одному или нескольким из этих ключевых слов, а затем проверяете, сколько ключевых слов соответствует порядку.Вы также можете включить это в запрос, но тогда вам нужно будет сделать запрос для каждого ключевого слова и объединить эти результаты с родительским запросом.

Другой вариант, который я окончательно выбрал из-запроизводительность и гибкость - это использование сервера SOLR и использование php solr_client (см. руководство по php ).Сервер SOLR будет индексировать базу данных с учетом нескольких (довольно простых) файлов конфигурации и разрешать полнотекстовый поиск по любому индексируемому полю.Более подробную информацию о настройке сервера SOLR можно найти в руководстве по SOLR: tutorial .

Конечно, существует множество других методов и инструментов.Выше приведены лишь некоторые из них, которые я использовал в прошлом или до сих пор использую (я действительно счастлив использовать solr, но я думаю, это что-то личное).

Удачи.

0 голосов
/ 27 июня 2011

То, что вы хотите, - это не то, что MySQL делает очень хорошо.Yhn упомянул некоторые варианты.

MySQL FULLTEXT индексы не пользуются популярностью по уважительным причинам.

Разбивка ваших текстов на ключевые слова и формирование из них индексированных таблиц, которые ссылаются наОригинальные предметы могут работать.Но делать это, по сути, все равно, что начинать создавать собственную поисковую систему.

Доступны гораздо лучшие поисковые системы, чем вы, вероятно, создадите.Yhn упомянул SOLR , что очень хорошо, но я хочу упомянуть также Sphinx Search , который я использую.У SOLR есть некоторые интересные особенности, которых нет у Sphinx, но у меня сложилось впечатление, что Sphinx легче изучать и с чего начать.Это стоит вашего внимания.

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