【问题标题】:Boosting on an elasticsearch field and words in the field within the query提升查询中字段中的弹性搜索字段和单词
【发布时间】:2016-08-10 10:31:25
【问题描述】:

我正在尝试实现以下场景...

如果查询包含此字段中的特定单词,我希望在我的弹性搜索索引中成为第一条结果的特定记录。该字段是公司名称,例如,如果有人将“福特”放入搜索中,则公司名称字段将比所有其他字段有所提升,因此这是最高分......这似乎对我来说只需要一个词。 .. 福特、日产等...

但是......如果查询是“福特汽车销售”,那么其他页面的排名高于我想要的页面,因为当然很多页面都包含所有这些术语(搜索运算符是 AND)......但是那里一种通过能够提升公司名称字段中的单词而仍然将我的页面排名靠前的方法,而不管查询中有多少单词或在其他地方找到......

最后,我能否以某种方式设置公司名称的变体来提升这些结果...所以如果名称是 fiat-chrysler,则设置用户可以搜索的其他变体,例如“fiat chrysler”而不连字符....

感谢您的帮助....

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    在您的查询中,当您使用“字段”指定要搜索的字段时,请使用 ^ 为“公司名称”字段添加提升。

    例子:

    {
        "fields": ["company_name^10","other_field_a", "other_field_b"],
        "query" : {
            "term" : { "company_name" : "ford" }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      相关资源
      最近更新 更多