【问题标题】:SOLR - Different score to different words in a multi word search querySOLR - 多词搜索查询中不同词的不同分数
【发布时间】:2016-07-01 11:28:24
【问题描述】:

我在我的一个项目中使用 SOLR 和 mongoDB 进行搜索。我必须说,SOLR 非常强大。 目前,如果查询是多词,我正在寻找一种方法来为不同的关键词设置不同的分数。

例如如果用户搜索黑色娃娃屋

黑色的重量应该大于娃娃,娃娃的重量应该大于房子。

黑色 > 娃娃 > 房子

是否可以在 SOLR 中实现这一点。如果是,怎么做?

【问题讨论】:

    标签: solr


    【解决方案1】:

    您可以在标准 lucene 查询语法中为每个术语赋予单独的权重(在名为 text 的字段中搜索):

    text:black^10 text:doll^5 text:house
    

    这将使black 的权重是house 的十倍,doll 的权重是house 的五倍,但只有black 的一半权重。您必须调整权重才能获得所需的结果。如果您想使用 q= 字段中的常规文本并将 (e)dismax 作为查询解析器,您可以使用 bq 将这些提升与查询本身分开添加。

    【讨论】:

    • 我想使用 q = "complete text" 因为搜索是通过解析器在多个字段中完成的。
    • 然后你可以使用bqfield:foo^boost-syntax 来保持你的查询与它已经是一样的。如果不将这些提升添加到某处的术语中,您将无法提升单个术语:-)
    【解决方案2】:

    您是否尝试过提升查询中的字词。您可以为查询中的术语指定不同的提升值。 示例:如果您将查询转换为:

    textfeild:black^6 textfeild:doll^5 textfeild:house^2

    您得到的结果与顶级文档将匹配为黑色、下一个黑色、下一个与房子。

    它将术语权重与提升值相乘。这里黑色 6,娃娃 5,房子 2。

    【讨论】:

    • 我想使用 q = "complete text" 因为搜索是通过解析器在多个字段中完成的。
    • 正如@MatsLindh 提到的,考虑Boost Query(bq),它指定了一个术语或短语应该被“提升”的因素
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2012-02-18
    • 2023-04-04
    • 2017-01-08
    • 2022-11-25
    • 2015-11-02
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多