用solr突出精确短语

用solr突出精确短语,solr,highlighting,phrase,Solr,Highlighting,Phrase,我使用solrj作为客户机在solr服务器上索引文档 我是solr新手,在solr中突出显示有问题。用solr突出显示精确的短语不起作用 例如,如果关键字是:“dulce hogar” 它返回: <i> dulce </i> <i> hogar </i> dulce hogar 它应该是: <i> dulce hogar </i> dulce hogar 我不明白问题出在哪里 schema.xml中的我的配置

我使用solrj作为客户机在solr服务器上索引文档 我是solr新手,在solr中突出显示有问题。用solr突出显示精确的短语不起作用

例如,如果关键字是:“dulce hogar” 它返回:

<i> dulce </i> <i> hogar </i> 
dulce hogar
它应该是:

<i> dulce hogar </i> 
dulce hogar
我不明白问题出在哪里

schema.xml中的我的配置

 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"  />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt"   ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

以及在solrconfig.xml中

 <requestHandler name="/select" class="solr.SearchHandler">

    <lst name="defaults">
  <str name="echoParams">explicit</str>
  <int name="rows">10</int>
   <str name="df">text</str>
  <bool name="hl.usePhraseHighlighter">true</bool>
</lst>


 </requestHandler>
<!-- Highlighting Component

   http://wiki.apache.org/solr/HighlightingParameters
-->
<searchComponent class="solr.HighlightComponent" name="highlight">
<highlighting>
  <!-- Configure the standard fragmenter -->
  <!-- This could most likely be commented out in the "default" case -->
  <fragmenter name="gap" 
              default="true"
              class="solr.highlight.GapFragmenter">
    <lst name="defaults">
      <int name="hl.fragsize">100</int>
    </lst>
  </fragmenter>

  <!-- A regular-expression-based fragmenter 
       (for sentence extraction) 
    -->
  <fragmenter name="regex" 
              class="solr.highlight.RegexFragmenter" default="true">
    <lst name="defaults">
      <!-- slightly smaller fragsizes work better because of slop -->
      <int name="hl.fragsize">70</int>
      <!-- allow 50% slop on fragment sizes -->
      <float name="hl.regex.slop">0.5</float>
      <!-- a basic sentence pattern -->
      <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>
      <bool name="hl.usePhraseHighlighter">true</bool>
      <bool name="hl.highlightMultiTerm">true</bool>
    </lst>
  </fragmenter>

  <!-- Configure the standard formatter -->
  <formatter name="html" 
             default="true"
             class="solr.highlight.HtmlFormatter">
    <lst name="defaults">
      <str name="hl.simple.pre"><![CDATA[<em>]]></str>
      <str name="hl.simple.post"><![CDATA[</em>]]></str>
    </lst>
  </formatter>

明确的
10
文本
真的
100
70
0.5
[-\w,/\n\“&apos;]{20200}
真的
真的
]]>
]]>
提前谢谢你的帮助


Sil。

我是solr的初学者,但据我所知,为了获得准确的短语,我更喜欢使用solr.NGramTokenizerFactory,而不是仅用于索引部分的WhitespaceTokenizerFactory。
或者你可以在你的请求中尝试突出显示选项
hl.mergecontractive=true
(请参阅)。希望它能帮助你。

检查帖子。你需要设置hl.q=“dulce hogar”字段以及fastVector和phraseHighLighter。

有人能帮我吗!!有什么想法吗?谢谢!