Поиск по части слова в Sphinxsearch

Jul 11, 2016 15:02 · 189 words · 1 minute read sphinxsearch

Поисковый движок Sphinxsearch поддерживает так называемый wildcard-поиск — поиск по части слова, который практически незаменим в каталогах и интернет-магазинах.

В таком случае вводимый запрос легко дополнить или исправить, если он содержит ошибки. Давайте разберемся!

В общем случае, для настройки wildcard-поиска в конфигурационном файле /etc/sphinxsearch/sphinx.conf достаточно добавить несколько директив в секцию индексации. Директивы могут быть следующими:

  • min_prefix_len — минимальная длина префикса слова для индексации (при индексации слова “example” будут созданы дополнительные индексы “exa”, “exam”, “examp” и “exampl”);
  • min_infix_len — минимальная длина инфиксного префикса слова при индексации;
  • dict — указывает тип словаря (используется для уменьшения размера индекса и поиска подстрок в больших БД);
  • index_exact_words — сохранять в индексе слова как они есть;
  • expand_keywords — хранить в индексе все формы слов.

Примечание. При включении директивы dict директива min_infix_len автоматически игнорируется.

Пример использования wildcard-поиска для городов (настройки индексации таблицы city) выглядит так:

...
index city1
{
  source            = city
  path              = /var/data/city1 
  morphology        = stem_enru
  dict              = keywords
  index_exact_words = 1
  expand_keywords   = 1
  min_word_len      = 1
  min_prefix_len    = 3
}

После внесения изменений в конфиг не забудьте пересоздать индексы:

/usr/bin/indexer --rotate --all

Далее необходимо проверить релевантность поисковой выдачи привычным для вас способом.

tweet Share