【发布时间】:2020-06-14 16:17:44
【问题描述】:
我有一个匹配五个不同字段的多重匹配查询。我想限制这个多重匹配查询对整体查询的影响,这样如果由于某种原因,其中一个字段刚刚被搜索词发送到垃圾邮件,它就不会得到很大的分数.我想要的是一种衰减的影响。我已经浏览了文档,我正在努力寻找一种方法来做到这一点。我找到了衰减脚本函数文档 (https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/function-score-query-usage.html),但它们似乎都特定于单个字段,这对我没有帮助,因为我想将它应用于多匹配查询。
这是我想限制影响的查询:
new MultiMatchQuery
{
Type = TextQueryType.MostFields,
Fields = Field<SearchableTour>(f => f.Name, 0.5)
.And(Field<SearchableTour>(f => f.StartCity, 0.1))
.And(Field<SearchableTour>(f => f.FinishCity, 0.1))
.And(Field<SearchableTour>(f => f.Description, 0.05))
.And(Field<SearchableTour>(f => f.ItineraryText, 0.01)),
Query = searchText,
Operator = Operator.And
}
基础数据不受我控制,理论上有人可以用常见的搜索词填充其中一个字段,以人为地将其结果提升到顶部。我想阻止这种情况,但仍然允许这些字段产生有限的影响。似乎没有任何“最高分数”的概念可以让我限制这些字段的组合分数。
【问题讨论】:
标签: c# elasticsearch nest elasticsearch-query