随着文档的增加,Elasticsearch给出了不同的分数



祝愉快

我有两个非常大的产品列表,并且将不断增长,我希望对它们的标题进行比较。也就是说,我将第一个列表中的第一个产品与第二个列表中所有的产品进行比较,并以相同的方式进行,相似的产品被放在同一组中。

我用Laravel和Elastic编写了代码,我的工作方法如下。

我在Elastic中为第二个列表编制了索引,并在第一个列表上做了foreach,Elastic将它们与第二个名单进行了比较。最后,我使用min_score,我发现那些高于某个分数的分数是可以接受的。

但上述方法适用于具有固定数字的列表,如果第二个列表(在Elastic中索引的列表(的数量增加,则分值​​改变例如,它发现产品";a";并给它打了10分。当第二个列表增加时,他发现相同的产品";a";但是给它一个分数,例如,12。

我看到了两种解决方案,一种是使用";function_score";,或者改变相似性算法并将其从"0"改变为"0";BM25〃;至";布尔值";。

无论我换了多少产品,有没有其他方法可以获得找到的产品的类似分数?

不,只要你依赖Elasticsearch的评分,它是基于tf/idf的(实际上是BM25(。该分数受文档数量、索引的文本数量、单词频率和分布、系统中碎片和副本的数量以及分段合并状态的影响。预计分数会随查询而变化,尤其是当文档在索引中发生变化(增加或减少(时。

最新更新