2014-09-10 3 views
0

Я написал пользовательский токенизатор для solr, когда я сначала добавляю записи в solr, они идут через мой токенизатор и другие фильтры, когда они идут через мой токенизатор, я вызываю веб-службу и добавляю необходимые атрибуты. После этого я могу использовать поиск без отправки запросов на веб-службу. Когда я использую поиск с выделениями, данные снова проходят через токенизатор, что я должен сделать, чтобы не повторять токенизатор снова?Почему solr reindex данные при подсветке?

ответ

0

Когда подсветка запускается в выделенном тексте, анализатор и токенизатор для поля повторно запускаются в тексте для оценки различных токенов против представленного текста, чтобы определить, какой фрагмент является наилучшим совпадением для запроса производится. Вы можете увидеть this code around line #62 of Highlighter.java in Lucene.

Есть, однако, несколько вариантов, которые могли бы помочь в отрицании необходимости повторного разбора текста документа, все приведены в качестве опции на the community wiki for Highlighting:

Для стандартной подсветки:

Это не делает требуют каких-либо специальных структур данных, таких как termVectors, , хотя они будут использовать их, если они присутствуют. Если это не так, этот маркер будет пере анализировать документ «на лету», чтобы выделить его. Этот маркер является хорошим выбором для широкого спектра поиска прецедентов.

Есть также два других Highlighter-реализаций вы можете захотеть взглянуть на, или как один использует другие структуры поддержки, которые могли бы избежать делать retokenizing/анализ поля (я думаю, что тестирование будет намного быстрее для вам, чем мне сейчас).

FastVector Highlighter: FastVector Highlighter требует долгосрочных вариантов векторных (termVectors, termPositions и termOffsets) на поле.

Публикации Highlighter: Для маркеров проводки требуется storeOffsetsWithPositions для настройки на поле. Это гораздо более компактная и эффективная структура, чем терминальные векторы, но не подходит для огромного количества запросов.

Вы можете переключить подсветку реализации с помощью hl.useFastVectorHighligter=true или добавления <highlighting class="org.apache.solr.highlight.PostingsSolrHighlighter"/> к вашему определению searchComponent.

+0

Я думаю, что должен использовать его, но у меня нет определения поискового компонента, и если определить его поиск не работает. –