Я хотел бы лучше понять жизненный цикл IndexSearcher
в Solr, я понимаю, что IndexSearcher
для Lucene будет рекомендовать: «По соображениям производительности, если ваш индекс не меняется, вы должны использовать один экземпляр IndexSearcher
для нескольких поисков вместо создания нового по одному за поиск ». (Lucene 4.6.1).
Но когда дело доходит до мира Solr, который в Java Webapp с диспетчером сервлетов. Продолжаем ли мы повторно использовать один и тот же экземпляр IndexSearcher
до тех пор, пока не будет изменен индекс?
Я вижу, что «Хоссман» говорил об этом для жизненный цикл поискового запроса solr, но он ничего не упоминает о том, как мы обрабатываем / очищаем indexsearcher
.
Причина в том, что вы не взаимодействуете напрямую с IndexSearcher Lucene. Это ответственность Solr, и она держится подальше от вас как пользователя Solr.
Единственное место, где вы можете взаимодействовать с поисковиком при использовании Solr, - это настройка автоматической фиксации.
При выполнении фиксации или оптимизации текущий считыватель индекса будет закрыт, а новый будет открыт. При вводе этих команд у вас есть возможность сообщить Solr, что вы хотите подождать, пока новый поиск будет открыт, прежде чем он вернется, что позволит вам быть уверенным, что ваши изменения стали видимыми (через waitSearcher
).
В остальном жизненный цикл поисковика (который можно описать как «оставаться в живых до тех пор, пока не будут внесены изменения в индекс, а затем снова открыть новый») полностью скрыт от внешнего мира.
Вы также можете подключиться к Solr IndexSearcher с помощью слушателей, заполняющих кеши: github.com/apache/lucene-solr/blob/…