Как ускорить поиск в Sphinx с использованием отрицательных слов?

#performance #search #sphinx

#Производительность #Поиск #sphinx

Вопрос:

Мне нужно использовать поиск в sphinx с отрицательными словами, но если я использую отрицательные слова, скорость поиска падает. Если поиск без отрицательных слов работает хорошо. Что я могу сделать, чтобы настроить sphinx для поиска с отрицательными словами? Мне нужен быстрый поиск. пример запроса:

«кошка -собака -животное» — медленный запрос

«cat» — быстрый запрос

Чем больше отрицательных слов, тем медленнее поиск. версия sphinx 2.2.11, config:

 searchd
{
  dist_threads = 2
  listen            = 9312
  log               = /var/log/sphinxsearch/searchd.log
  query_log         = /var/log/sphinxsearch/query.log
  read_timeout      = 5
  max_children      = 30
  pid_file          = /var/run/sphinxsearch/searchd.pid
  max_matches       = 1000000
  seamless_rotate   = 1
  preopen_indexes   = 1
  unlink_old        = 1
  binlog_path       = /var/lib/sphinxsearch/data
}
  

Ответ №1:

Не уверен, что есть какая-либо опция magic config, которая может ускорить это как таковое.

Запрос можно задать, только найдя все документы «cat». Затем перебираем каждую из dog и animal и удаляем их. Это требует времени.

Может быть, сегментирование поможет https://www.google.com/search ?q = sphinx поиск шард … он разбивает запрос на части, поэтому его можно «распараллелить»