为什么solr重新索引数据以突出显示?

时间:2014-09-10 16:16:38

标签: java solr tokenize

我为solr编写了自定义标记器,当我第一次向solr添加记录时,他们将通过我的标记器和其他过滤器,当他们通过我的标记器时,我调用Web服务并添加所需的属性。之后我可以使用搜索而不向Web服务发送请求。当我使用突出显示数据的搜索再次通过我的标记器时,我应该怎样做才能再次通过标记器?

1 个答案:

答案 0 :(得分:0)

当要在突出显示的文本上运行荧光笔时,将对文本重新运行该字段的分析器和标记生成器,以针对提交的文本对不同的标记进行评分,以确定哪个片段与生成的查询最匹配。您可以看到this code around line #62 of Highlighter.java in Lucene

但是有一些选项可能有助于消除重新解析文档文本的需要,所有选项都作为the community wiki for Highlighting上的选项提供:

对于标准荧光笔:

  

它不需要任何特殊的数据结构,例如termVectors,   虽然如果他们在场,它会使用它们。如果他们不是,这个   荧光笔将动态重新分析文档以突出显示它。   这款荧光笔是各种搜索的不错选择   用例。

还有另外两个Highlighter实现你可能想要看一下,因为任何一个使用其他支持结构可能会避免对字段进行重新标记/分析(我认为测试它会比你快得多)我现在。)

  

FastVector荧光笔:FastVector荧光笔需要在该字段上使用术语向量选项(termVectors,termPositions和termOffsets)。

     

过帐荧光笔:过帐荧光笔需要在字段上配置storeOffsetsWithPositions。这是一个比术语向量更紧凑和有效的结构,但不适用于大量的查询术语。

您可以使用hl.useFastVectorHighligter=true或将<highlighting class="org.apache.solr.highlight.PostingsSolrHighlighter"/>添加到searchComponent定义来切换突出显示实现。