3

我对使用 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 会解决我的问题,但事实并非如此)

4

2 回答 2

1

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

    <field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true"   multiValued="true" termVectors="true" termPositions="true"  termOffsets="true"/>
于 2011-08-08T09:20:27.067 回答
0

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

选择:

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

于 2011-08-03T11:06:49.360 回答