使用Solr 4.7.0附带的默认示例文档和模式(带有ipods等的文档和模式)。
带有短语slop的查询,例如:
http://localhost:8983/solr/collection1/select?wt=json&q=features:%22car%20white%22~4&fl=id,features&omitHeader=true
给我2个匹配的文件:
{
"response":{"numFound":2,"start":0,"docs":[
{
"id":"F8V7067-APL-KIT",
"features":["car power adapter, white"]},
{
"id":"IW-02",
"features":["car power adapter for iPod, white"]}]
}}
如果我使用相同的slop值4从“car white”更改为“white car”,我只得到结果中的第一个文档。 查看浏览中的说明,对于两个查询中返回的文档,它说:
(MATCH) weight(features:"white car"~4 in 3)
对于另一个文档,第一种情况是..."car white"~4 in 4)
,但将订单更改为“白车”与文档不匹配。
这似乎暗示它依赖于“某种程度”......但不是真的吗?谁能解释一下这里发生了什么?
答案 0 :(得分:5)
当你交换这些单词时,编辑距离会增加。基本上,交换将编辑距离加2(因为第一次编辑会将单词移到另一个上面)。
查询“car white”你有
与“白车”你有:
由于您的查询中slop设置为4,因此最后一个结果的编辑距离太高,并且不会显示。 PhraseQuery.setSlop()
记录短语slop的行为,以供进一步阅读。