Sphinx的支持接近度的排名器使用稍微修改过的BM25排名器(统计词袋)+一个最长的词子字符串匹配公式,而Solr使用其他一些统计排名函数(不是BM25,但类似)+如果需要的话对词元(这类似于LWS方法)进行提升。我认为这两种方法都不能模拟人类对相关性的看法,即当答案中的单词不一定相邻或顺序相同时,相关性不会急剧下降。
简单的例子:
查询:Bob Jones
正文:. . . .鲍勃·琼斯. . . .(看起来与我相关,但这将回落到仅统计)
或者
正文:. . . .鲍勃·米德尔南·琼斯. . . .(同样)
我知道这样做是有代价的,但我不是唯一一个注意到Solr和Sphinx在单词无序或被单词(在某些情况下甚至可能是一个停止词)分隔的情况下,本质上都会退回到单词袋统计排名器的人。
想法吗?如果我想把这两种情况中的任何一种排在前面,而不是那些单词只出现在文档中某个地方的情况呢?还是我错了,Solr或Sphinx会这么做?
在solr中有基于邻近度的排名。检查http://wiki.apache.org/solr/SolrRelevancyCookbook Term_Proximity