#php #sphinx
#php #sphinx
Вопрос:
Я новичок в Sphinx и пытаюсь правильно настроить его. Я хочу разрешить частичное совпадение слов для всех поисковых запросов и не хочу, чтобы пользователям приходилось вводить подстановочные знаки самостоятельно.
Я хочу, чтобы поиск функционировал как на Amazon или Google, где, если вы начнете вводить слово, появятся предложения. Так, например, если кто-то ввел «x», должны появиться совпадения типа «Xbox».
Вот настройки индекса, которые у меня есть в настоящее время:
min_word_len = 1
min_prefix_len = 1
prefix_fields = name
charset_type = utf-8
Что касается PHP, я использую SPH_MATCH_EXTENDED2
и SPH_SORT_RELEVANCE
. Я оставил режим ранжирования по умолчанию, что бы это ни было. Казалось, что эти настройки обеспечивают наилучшие результаты поиска, когда я изменил настройки на основе проб и ошибок.
Я читал похожие вопросы здесь и на других сайтах, но ответы, похоже, всегда ссылаются enable_star
на то, что, по словам документации, устарело.
Итак, мой вопрос в том, как мне включить частичные совпадения слов в Sphinx? Должен ли я просто добавлять *
к каждому слову в пользовательском запросе, делая что-то вроде этого?
$search = str_replace(' ', '* ', trim($search)) '*';
Ответ №1:
Вы можете установить expand_keywords = 1
, как описано в документации.
На самом деле это в значительной степени просто добавляет звезды для вас автоматически — таким образом, что в целом точные совпадения будут оцениваться немного выше, чем чистые совпадения «части».