Solr条件高亮显示:如何突出带条件?

lf3rwulv  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(129)

在Solr实现中,我尝试根据其他字段而不是我们搜索的字段来做一些条件高亮显示。
我想得到匹配的结果,一个字段“content”突出显示,只有当它在Solr中指出,这个字段可以公开这个元素。
给定一个Solr基,其中填充有:

[{ firstname:"Roman",
 content: "A quick response is the best",
access:"" },
{ "firstname":"Roman",
 "content": "Responsive is important",
"access":"contentAuthorized" }
]

我想在我的答案中得到这两个文档,并且只为具有数据“access”:“contentAuthorized”的文档突出显示“content”字段,因此我执行查询:

q:(firstname:r* OR (+tags:contentAuthorized AND +content:r*))

预期的答案是:

...
{
      {
        "firstname":"Roman"
      },
      {
        "firstname":"Roman"
      }
},
highlighting":{
    "0f278cb5-7150-42f9-8dca-81bfa68a9c6e":{
      "firstname":["<em>Roman</em>"],
    "105c6464-0350-4873-9936-b46c39c88647":{
      "firstname":["<em>Roman</em>"],
      "content":["<em>Responsive</em> is important],
      }
}

但我实际上得到:

...
{
      {
        "firstname":"Roman"
      },
      {
        "firstname":"Roman"
      }
},
highlighting":{
    "0f278cb5-7150-42f9-8dca-81bfa68a9c6e":{
      "firstname":["<em>Roman</em>"],
      "content":["A quick <em>response</em> is the best"],
    "105c6464-0350-4873-9936-b46c39c88647":{
      "firstname":["<em>Roman</em>"],
      "content":["<em>Responsive</em> is important],
      }
}

因此,当(+tags:contentAuthorized AND +content:r*)为false时,我在第二个元素的突出显示部分获得了“content”。
有没有人知道我如何用Solr so做条件高亮显示?谢谢你阅读这篇文章,也谢谢你花时间思考它:D

knpiaxh1

knpiaxh11#

如果只想突出显示某些字段,则需要将查询参数hl.fl设置为这些字段。在本例中为hl.fl=content。然后应设置hl.requireFieldMatch=true
请参阅Solr突出显示文档:
默认情况下,如果为false,则无论解析的查询引用的是哪个字段,都将突出显示每个要突出显示的字段(hl.fl)的所有查询项。如果设置为true,则只会突出显示与突出显示的字段对齐的查询项。
有关如何使用查询参数的详细信息,请参阅:https://solr.apache.org/guide/8_6/highlighting.html

相关问题