Sphinx 斯芬克斯:了解大领域的邻近因子排名

Sphinx 斯芬克斯:了解大领域的邻近因子排名,sphinx,Sphinx,该文件解释了斯芬克斯接近因子排名算法(见章节:短语接近因子) 如果在字段中多次找到关键字,邻近因子ranker会给出更高的字段权重吗? 例如,使用与链接文档的引用部分类似的逻辑。对于单个实例,匹配短语的权重为2: 1) query = one two three, field = one and two three field_phrase_weight = 2 (because 2-keyword long "two three" subphrase matched) 如果同一个短语匹配两次

该文件解释了斯芬克斯接近因子排名算法(见章节:短语接近因子)

如果在字段中多次找到关键字,邻近因子ranker会给出更高的字段权重吗?

例如,使用与链接文档的引用部分类似的逻辑。对于单个实例,匹配短语的权重为2:

1) query = one two three, field = one and two three
field_phrase_weight = 2 (because 2-keyword long "two three" subphrase matched)
如果同一个短语匹配两次呢?重量会加倍吗

2) query = one two three, field = one and two three one and two three
field_phrase_weight = 4? (because 2-keyword long "two three" subphrase matched twice?)
我怀疑上述问题的答案是否定的——无论是否多次找到关键字/关键字子序列,sphinx都将返回相同的字段权重。如果是这种情况,如果无论内容大小都返回相同的字段权重,那么如何在大型sphinx字段(如文章)中充分利用近似算法?特别是考虑到用于搜索的go to sphinx算法,是非常依赖“近似排序”的近似算法(对于多字段文档,至少60%的算法将加权到bm25以上的接近度排名

如果在字段中多次找到关键字,邻近因子ranker是否会给出更高的字段权重

否。相同的字段权重将适用

例如,使用与链接文档的引用部分类似的逻辑。对于单个实例,匹配短语的权重为2:

1) 查询=一二三,字段=一二三 字段\短语\权重=2(因为2个关键字长的“两三”子短语匹配)

如果同一短语匹配两次呢?权重会加倍吗

2) query = one two three, field = one and two three one and two three
field_phrase_weight = 4? (because 2-keyword long "two three" subphrase matched twice?)
2) 查询=一二三,字段=一二三一二三 字段\短语\权重=4?(因为2个关键字长的“两三”子短语匹配了两次?)

在本例中,权重在第二次查询中不会加倍

如果无论内容大小,都会返回相同的字段权重,那么如何对大型sphinx字段(如文章)充分利用近似算法

我所能理解的唯一方法是通过组合接近度,为多关键字短语赋予更高的权重,同时也为BM25在算法中赋予足够的权重,以增加提供“文档中更频繁出现的罕见关键字”因素的价值。BM25排序算法的BM25部分就是为此而设计的

这是近似值bm25表达式:
sum(lcs*用户权重)*1000+bm25
,此算法的bm25分量随着文档中作为
sum(lcs*用户权重)的狮身人面像字段越多,逐渐变得越不相关*1000
公式的一部分适用于每个单独的字段,而等式的
bm25
部分适用于整个文档

在我使用10个斯芬克斯字段的情况下,
bm25
仅占总重量的5%——我增加了公式中
bm25
部分的重量,以占总重量的20%左右,从而改变了公式:

总和(lcs*用户重量)*1000+bm25*4