Поиск по части слова в Sphinxsearch
Jul 11, 2016 15:02 · 189 words · 1 minute read
Поисковый движок 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
Далее необходимо проверить релевантность поисковой выдачи привычным для вас способом.