【问题标题】:Avoid slow highlighting on Solr because of stemming避免因为词干而在 Solr 上缓慢突出显示
【发布时间】:2011-10-15 23:32:38
【问题描述】:

我对使用 Solr 很陌生,但想请教一下。 我正在开发一个应该能够突出显示查询结果的应用程序。为此,我正在使用正则表达式碎片:

<highlighting>
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
<lst name="defaults">
  <int name="hl.fragsize">500</int>
  <float name="hl.regex.slop">0.5</float>
  <str name="hl.pre"><![CDATA[<b>]]></str>
  <str name="hl.post"><![CDATA[</b>]]></str>
  <str name="hl.useFastVectorHighlighter">true</str>
  <str name="hl.regex.pattern">[-\w ,/\n\"']{20,300}[.?!]</str>
  <str name="hl.fl">dokumentum_syn_query</str>
</lst>

该字段使用术语向量和偏移量进行索引:

<field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true"   multiValued="true" termVectors="on" termPositions="on"  termOffsets="on"/>
<fieldType name="huntext_syn" class="solr.TextField" stored="true" indexed="true" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="com.morphologic.solr.huntoken.HunTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" />
        <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory"
        lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex"
        cache="alma"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" />
      <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory"
        lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex"
        cache="alma"/>
          <filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

突出显示效果很好,只是它真的很慢。我意识到这是因为荧光笔/片段器再次对所有结果文档进行了词干处理。

您能帮我解释一下为什么会发生这种情况吗?我应该如何避免这种情况? (我认为使用 fastvectorhighlighter 会解决我的问题,但它没有)

【问题讨论】:

    标签: solr highlighting stemming


    【解决方案1】:

    为了避免通过突出显示“缓慢”的 solr 结果,我决定不使用 solr 突出显示。 我在客户端编写了突出显示功能。 这项工作适合我,但有点棘手,因为您必须以与 solr 在服务器端相同的方式处理客户端的搜索短语,以便在客户端也找到标记化和词干化的术语 - 标记,搜索并找到了什么 solr。 这意味着:您必须在客户端实现词干提取功能。

    替代方案:

    我认为,结果集中的术语向量为您提供了有关您必须在客户端突出显示的术语位置的信息。您可以使用这些信息在客户端突出显示术语,而无需在客户端实施词干分析器。但我认为:最后这并不是一个真正的选择。因为 Solr 仍然需要计算单词的位置 - 所以你不会在服务器端节省时间。

    【讨论】:

    • 感谢您的回答!以前我读过关于 tervVector 的东西,正如你在上面看到的,我尝试使用它。不幸的是,我可能使用了一些过时的文档,并将值设置为 on 而不是 true。这是诀窍,它帮助我忽略了词干。
    【解决方案2】:

    问题是,我尝试使用值“on”而不是“true”。所以方案上的正确行是:

        <field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true"   multiValued="true" termVectors="true" termPositions="true"  termOffsets="true"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-30
      • 2012-09-12
      • 2019-09-10
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2015-01-28
      • 2019-05-18
      相关资源
      最近更新 更多