Solr短语slop顺序是否依赖?

时间:2014-03-19 20:48:30

标签: solr lucene

使用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),但将订单更改为“白车”与文档不匹配。

这似乎暗示它依赖于“某种程度”......但不是真的吗?谁能解释一下这里发生了什么?

1 个答案:

答案 0 :(得分:5)

当你交换这些单词时,编辑距离会增加。基本上,交换将编辑距离加2(因为第一次编辑会将单词移到另一个上面)。

查询“car white”你有

  • “汽车电源适配器,白色” - 距离= 2(2个额外的字)
  • “iPod的汽车电源适配器,白色” - 距离= 4(4个额外的字)

与“白车”你有:

  • “汽车电源适配器,白色” - 距离= 4(1个交换,2个额外的单词)
  • “适用于iPod的汽车电源适配器,白色” - 距离= 6(1个交换,4个额外的字)

由于您的查询中slop设置为4,因此最后一个结果的编辑距离太高,并且不会显示。 PhraseQuery.setSlop()记录短语slop的行为,以供进一步阅读。