Solr短语slop顺序是否依赖?

dig*_*oel 3 lucene solr

使用Solr 4.7.0附带的默认示例docs和schema(带有ipods的那个).

带有短语slop的查询,例如:

http://localhost:8983/solr/collection1/select?wt=json&q=features:%22car%20white%22~4&fl=id,features&omitHeader=true
Run Code Online (Sandbox Code Playgroud)

给我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"]}]
  }}
Run Code Online (Sandbox Code Playgroud)

如果我使用相同的slop值4从"car white"更改为"white car",我只得到结果中的第一个文档.查看浏览中的说明,对于在两个查询中返回的文档,它说:

(MATCH) weight(features:"white car"~4 in 3)
Run Code Online (Sandbox Code Playgroud)

对于另一个文档,在第一种情况下说,..."car white"~4 in 4)但将订单更改为"白色汽车"与文档不匹配.

这似乎意味着它依赖于"某种程度"......但不是真的吗?谁能解释一下这里发生了什么?

fem*_*gon 5

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

查询"car white"你有

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

与"白色汽车"你有:

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

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