作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个多匹配查询,它针对五个不同的字段进行匹配。我想限制此多匹配查询对整体查询的影响程度,以便如果由于某种原因,其中一个字段刚刚被搜索字词所淹没,则得分不会很高。我想要的是一种衰减的影响。我已经翻阅了文档,而我正努力寻找一种方法来做到这一点。我已经找到了衰减脚本函数docs(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
}
最佳答案
我认为您在正确的道路上。您应该能够将MultiMatchQuery插入所提供链接的查询部分,然后提供所需的任何分数函数。但是请注意,提供的衰减函数是针对数字,日期或地理位置字段的,因此您可能无法使用它们。我可能会做的是这样的:
new FunctionScoreQuery()
{
Query = new MultiMatchQuery{ ... },
ScoreMode = FunctionScoreMode.Sum,
Functions = new List<IScoreFunction>
{
new ScriptScoreFunction { Script = new InlineScript(##YourDecayFunction(_score)##) }
}
}
关于c# - Elasticsearch极限得分对多重匹配查询的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60487658/
如何限制 Realm 返回的对象数量? .findAll 返回匹配查询的所有行,而 .findFirst 只返回第一行。但是像前 1000 这样的东西呢? .findAll 可能会返回太多的行,以至于
SELECT * FROM table WHERE city LIKE example ORDER by RAND() Limit 10 我正在尝试从表中返回一些随机条目,但它在相当多的页面上被点击
我是一名优秀的程序员,十分优秀!