2016-04-29 55 views
0

我知道我可以根据每个结果使用MongoDB文本搜索分配的文本分数对查询结果进行排序。但是,给定两个不同的查询A和B来检索不同的文档D1和D2,如果score(A, D1) > score(B, D2)是否意味着D1与查询A关联比D2要查询B?MongoDB文本搜索得分在所有查询中是否可比?

换句话说,是相对于查询的分数还是绝对有效?

+0

我很好奇(虽然我不认为这会影响您的问题的答案):您的用例比较不同的文本搜索分数是什么?这些不同的查询是针对相同的文本索引还是针对不同的索引? – Stennie

+0

我忘了指定查询是针对相同的索引。在我的情况下,我想放弃所有分数低于阈值的结果X:如果只能在相同查询中将分数与其他分数进行比较,则这是不可能的。 –

回答

0

给出了检索不同文档D1和D2的两个不同查询A和B,如果得分(A,D1)>得分(B,D2)是否意味着D1比查询A更相关于D2查询B?

假设两个查询都是针对等效的文本搜索索引,则使用相同的评分算法,因此这似乎是一个正确的推论。

可能影响得分的查询将包括像文本指数期权因素:

+0

因此,没有标准化进行,例如查询长度或其他与查询有关的因素?在我的情况下,索引,权重和语言都是一样的) –

+0

得分肯定是查询相关的,并且存在标准化,比如词干化和标记化。不过,我认为这是计算确定相关性分数的一部分。因此,得分(A,D1)''得分(B,D2)'表明查询A与D1相关比B更接近于D2,但是并没有表明A到D2或B到D1的任何相关性。如果您试图混合查询A和B的结果,那么在单个查询中的逻辑OR可能更有意义? https://docs.mongodb.org/manual/reference/operator/query/text/#match-any-of-the-search-terms – Stennie

+0

嗯,我不想混合这两个查询的结果。我会尽量更清楚一点:假设我将阈值设置为0.2,并且丢弃所有文档的分数低于此阈值:可能对于查询A而言,分数范围从0.05到0.15,对于查询B,分数从1.2到1.6,因为有一些标准化因素,现在我的门槛是不相关的(或完全错误的)。我不知道这是否很明显,我希望如此 –