Sphinx 斯芬克斯:了解大领域的邻近因子排名
该文件解释了斯芬克斯接近因子排名算法(见章节:短语接近因子) 如果在字段中多次找到关键字,邻近因子ranker会给出更高的字段权重吗? 例如,使用与链接文档的引用部分类似的逻辑。对于单个实例,匹配短语的权重为2: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) 如果同一个短语匹配两次
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