Как избежать устаревших результатов в индексе сфинкса без полного переиндексации? - PullRequest
0 голосов
/ 06 февраля 2011

Я использую Sphinx (v. 0.99) в своем приложении Java.Я также использую его с плагином think_sphinx в приложении rails.

Для приложения Java я пытаюсь использовать дельта-индексы - я в основном выясняю это из существующей конфигурации rails и поведения приложения.

У меня есть логическое поле с именем 'delta' для объекта модели, который я ищу.Всякий раз, когда я обновляю или создаю запись, я устанавливаю для этого поля дельты значение true.
Я подтверждаю, что запросы дельты и основного индекса в моей конфигурации sphinx выбирают правильные записи на основе этого поля дельты.
Кроме того, мойКод запускает переиндексацию дельты при обновлении или вставке (я никогда не удаляю данные).

После обновления записи она корректно появляется в дельта-индексе, но, конечно, устаревшая версия все еще находится в главном индексе.Я могу увидеть это, запустив команду 'search' вручную.

Пока все работает так же, как и для моего приложения rails - приложение rails также будет показывать устаревшую копию в главном индексе, если я проверюс помощью команды поиска.

Однако, если я выполняю поиск через приложение rails, я больше не вижу эту устаревшую запись (хотя поиск в командной строке показывает, что она все еще там).Однако, если я выполняю поиск через свое приложение Java, я все еще вижу эту устаревшую запись в своих результатах.

Я предполагаю, что плагин think_sphinx каким-то образом решает эту проблему, или я где-то неверно указал какую-то конфигурационную запись.

Я пролистал источник think_sphinx, чтобы посмотреть, обрабатывает ли он это каким-то особым образом, но я не увидел ничего очевидного.

В идеале я хочу того же поведения в своем Java-приложении..

Моя (Java) конфигурация sphinx - здесь .

1 Ответ

2 голосов
/ 06 февраля 2011

Я не являюсь экспертом в think_sphinx или Java, но если вы хотите, чтобы дублированный документ исчезал из основной части индекса, вы можете использовать Sphinx kill-list (http://sphinxsearch.com/docs/current.html#conf-sql-query-killlist). Это было изобретено именно для случаевкак твой. Надеюсь, это поможет.

...