【问题标题】:Solr Conditional Highlighting: How to highlight with conditions?Solr 条件高亮:如何用条件高亮?
【发布时间】:2020-01-21 14:43:56
【问题描述】:

在 Solr 实现中,我试图根据其他字段而不是我们搜索的字段进行一些条件突出显示。

我希望只有在 Solr 中指示该字段可以针对该元素公开时,才能突出显示字段“内容”的匹配结果。

给定一个 Solr 基础,其中填充了:

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

我想在我的答案中获取两个文档,并且仅针对具有数据“访问”:“contentAuthorized”的那个字段突出显示“内容”字段,因此我正在执行查询:

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*) 为假时,我在第二个元素的高亮显示“内容”。

有人知道我如何使用 Solr 进行条件突出显示吗? 感谢您阅读本文并花时间思考:D

【问题讨论】:

  • 我认为 Solr 不支持用于突出显示您正在寻找的额外逻辑。我认为您需要在客户端应用程序中实现附加逻辑。您可以做的另一件事是查看 solr_config.xml 中“solr.HighlightComponent”searchComponent 的配置。
  • 感谢@HectorCorrea 的回答,我认为在客户端应用程序上添加逻辑是最简单的解决方案,您是对的。有一些缺点:这意味着我们需要一个更强大的应用程序服务器来对 Solr 返回的 Json 进行这些操作,并且我们会降低 Solr 的速度(例如,如果我们尝试对 50 000 个返回的文档执行此操作)。但是,总的来说,解决方案非常棒:D。我还不知道如何充分利用“solr.HighlightComponent”功能,我没有看到任何可以帮助做到这一点的东西,但感谢您提供完整列表。祝你一切顺利

标签: solr conditional-statements highlight


【解决方案1】:

如果您希望仅对某些字段应用突出显示,则需要将查询参数hl.fl 设置为这些字段。在你的情况下hl.fl=content。然后你应该设置hl.requireFieldMatch=true

参考 Solr 高亮文档:

默认情况下,false,无论解析后的查询引用什么字段,所有查询词都将突出显示每个要突出显示的字段 (hl.fl)。如果设置为 true,则只有与突出显示的字段对齐的查询词才会依次突出显示。

有关如何使用查询参数的更多信息:https://solr.apache.org/guide/8_6/highlighting.html

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2023-04-10
    相关资源
    最近更新 更多