Я просто взял на себя наши материалы solr/lucene от своего бывшего коллеги. Но есть странная ошибка.Никакая оптимизация не приводит к неправильному результату поиска
Если после dataimport нет оптимизации, на самом деле, если есть несколько файлов сегмента, результат поиска будет неправильным. Мы используем настраиваемый solr searchComponent. Насколько я знаю о lucene, оптимизация не должна влиять на результат поиска. Я сомневаюсь, что это может быть связано с многопоточным или незакрытым поисковиком/читателем или чем-то еще.
Любой может помочь? Спасибо.
Нашел одно интересное сообщение, в котором упоминался фильтр, сегмент и т. Д. http://www.gossamer-threads.com/lists/lucene/java-user/97270 – KailZhang
Я думаю, что я очень близок к истине. В процессе компонента поиска вызывается lucene.indexsearcher.search, а не поиск solr. Если я заменил этот поиск на solr, результат будет правильным. Поэтому теперь моя задача - переписать код для использования solrs (старый код использует docs для возврата из поиска lucene). – KailZhang
Ну, я вернулся, чтобы раскрыть мое открытие. Теперь я совершенно уверен, что произошло. SolrIndexSearcher.getDocSet вызывается в нашем фильтре, но этот getDocSet будет сканировать весь индекс, что означает все сегменты, тогда как фильтр вызывается для каждого сегмента. Это означает, что если есть 8 сегментов, будет выполнено 8 * 8 сканирований. И, пожалуйста, также помните, что в фильтре doc id поддерживается в сегменте. Поэтому остерегайтесь этого, когда вы хотите написать специальный фильтр люцен. – KailZhang