在 solr 中突出显示查询词的匹配文本

Highlight Matched Text for query term in solr

我已经安装了 solr jetty 5.1.3 并使用 tika 索引了超过 15000 个文档。我已经在 SOLR 中索引并存储了文档发布日期和内容。我在 solrConfig.xml 中启用了突出显示,这是突出显示的术语

的请求处理程序的 xml
<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="hl">on</str>
       <str name="hl.fl">content</str>
       <str name="hl.simple.pre">&lt;b&gt;</str>
       <str name="hl.simple.post">&lt;/b&gt;</str>
       <str name="f.content.hl.snippets">3</str>
       <str name="f.content.hl.fragsize">200</str>
       <str name="f.content.hl.maxAnalyzedChars">200000</str>
       <str name="f.content.hl.alternateField">content</str>
       <str name="f.content.hl.maxAlternateFieldLength">750</str>
     </lst>

    </requestHandler>

  <!-- A request handler that returns indented JSON by default -->
  <requestHandler name="/query" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">content</str>
       <str name="hl">on</str>
       <str name="hl.fl">content</str>
       <str name="hl.simple.pre">&lt;b&gt;</str>
       <str name="hl.simple.post">&lt;/b&gt;</str>
       <str name="f.content.hl.snippets">3</str>
       <str name="f.content.hl.fragsize">200</str>
       <str name="f.content.hl.maxAnalyzedChars">200000</str>
       <str name="f.content.hl.alternateField">content</str>
       <str name="f.content.hl.maxAlternateFieldLength">750</str>
     </lst>
  </requestHandler>

我不确定这是不是真的,但我确定这是真的。就像如果我在查询词中搜索 "Lorem",那么它会返回类似

的突出显示

Lorem ipsum pain sit with 2016, consectetur adipiscing elite。 Sed volutpat metus lorem,一个 nibh sodales 的地方。毛里求斯 tempus 崩溃,vulputate felis eu,tincidunt erat。

但是当我搜索发布日期在过去 1 年和现在之间的文档时,它突出显示了两个术语。例如,如果您搜索“"Lorem" 和 docPublishDate:[2015-01-20 TO 2016-01-20]

Lorem ipsum pain sitting with 2016, consectetur adipiscing elite。 Sed volutpat metus lorem,一个 nibh sodales 的地方。毛里求斯 tempus 崩溃,vulputate felis eu,tincidunt erat。

Solr Highlight 2016 文本也。我希望它只加粗 Lorem。我应该怎么做才能实现它?

改为使用过滤器查询来限制要返回的文档集 - 作为 fq 参数给出的过滤器不用于突出显示。

您还可以使用 hl.q 参数来使用特定查询来突出显示,因此您也可以将查询提交给没有日期部分的突出显示 - 但这种情况似乎更适合使用过滤查询。