2014-09-10 26 views
0

我爲solr編寫自定義標記器,當我第一次將記錄添加到solr時,他們正在通過我的標記器和其他過濾器,當他們通過我的標記器時,我調用Web服務並添加所需的屬性。之後,我可以使用搜索而不向Web服務發送請求。當我使用突出顯示數據的搜索再次通過我的tokenizer時,我應該怎麼做纔不再通過tokenizer?爲什麼要重新索引突出顯示的數據?

回答

0

當在文本上運行熒光筆以突出顯示時,該字段的分析器和標記器會在文本上重新運行,以針對提交的文本對不同的標記進行評分,以確定哪個片段最適合查詢產生的。你可以看到this code around line #62 of Highlighter.java in Lucene

然而,有幾個選項,可以幫助爲否定需要重新解析文檔的文本,所有給出的選項上the community wiki for Highlighting

對於標準的熒光筆:

它不需要任何特殊的數據結構,例如termVectors, ,儘管如果它們存在,它們將使用它們。如果不是,這個熒光筆將重新分析該文件以突出顯示它。 這款熒光筆是各種搜索 使用案例的理想選擇。

還有兩個其他的熒光筆實現,你可能想看看,因爲任何一個使用其他支持結構,可能會避免對字段進行重新分析/分析(我認爲測試它會快得多你比我現在)。

FastVector熒光筆:本FastVector熒光筆需要對場項向量選項(termVectors,termPositions,和termOffsets)。

過帳熒光筆:過帳熒光筆需要在該字段上配置storeOffsetsWithPositions。這是一個比術語向量更緊湊和更有效的結構,但不適用於大量的查詢術語。

您可以使用hl.useFastVectorHighligter=true或將<highlighting class="org.apache.solr.highlight.PostingsSolrHighlighter"/>添加到searchComponent定義來切換突出顯示實現。

+0

我想我應該使用它,但我沒有任何搜索組件定義,如果定義它搜索不起作用。 – 2014-09-10 23:58:27

相關問題