我有一个父子查询,根据我孩子的匹配程度,我有三种不同的行动要做。这些文件的大小大致相同,所以现在只需比较score
即可。我注意到得分始终在0到10之间,我将阈值设置为1.5
和3.0
。但我多次阅读过多次查询比较得分无效。
我当前的查询看起来像那样
var result = _client.Search<DataTypes.MyParent>(s => s
.Query(q => q
.HasChild<DataTypes.MyChild>(c => c
.ScoreMode(ChildScoreMode.Sum)
.Query(qq => qq
.CommonTerms(ct => ct
.Field(f => f.Content)
.Query(content)
)
)
.InnerHits()
)
)
).Hits;
var bestResult = result.FirstOrDefault();
if (bestResult.IsNotNull())
{
if (bestResult.Score < 1.5) { ... }
else if (bestResult.Score < 3.0) { ... }
else { ... }
}
我想,一旦我的父母得到更多的孩子或者有不同数量的孩子,这种方法就不再适用了,因为我总结了孩子们的分数。
我考虑过使用MinimumShouldMatch
但是我需要两次发送相同的查询。
那么看到最佳匹配有多好的正确方法是什么?
修改
在我的弹性指数中,我有多个问题的不同答案。当用户输入新问题时,我的系统需要找到最匹配的问题,从中需要找到答案。现在可能有三种情况:
为了了解我所处的情况,我将答案的得分与一些神奇的阈值进行比较。但显然这不是完美的解决方案。弹性评分根本不适用于此操作。
所以我的问题是:我如何知道结果的弹性有多自信?
答案 0 :(得分:0)
在短期内,如果索引内容大致相同,那么这些分数将是相同的(对于具有相同结构的查询),对于您的情况,我没有看到没有此比较的另一种解决方案。但分数取决于术语频率和文档频率。如果您添加更多文档或更改现有文档的内容,则会影响您的分数。因此,您可能需要定期调整这些阈值。