Lucene 6.2.0中的评分文档

Lucene 6.2.0中的评分文档,lucene,Lucene,我在lucene 6.2.0中的查询如下: query query = new PhraseQuery.Builder() .add(new Term("country","russia")) .setSlop(1) .build(); 基本上在我的所有文件中: { "_id" : ObjectId("586b723b4b9a835db416

我在lucene 6.2.0中的查询如下:

query query = new PhraseQuery.Builder()
                        .add(new Term("country","russia"))
                        .setSlop(1)
                        .build();
基本上在我的所有文件中:

{ 
    "_id" : ObjectId("586b723b4b9a835db416fa26"), 
    "name" : "test", 
    "countries" : {
        "country" : [
            {
                "name" : "russia"
            }, 
            {
                "name" : "USA china"
            }
        ]
    }
}
{ 
    "_id" : ObjectId("586b73f24b9a835fefb10ca5"), 
    "name" : "nitika jain", 
    "countries" : {
        "country" : [
            {
                "name" : "russia and denmrk"
            }, 
            {
                "name" : "USA china"
            }
        ]
    }
}
{ 
    "_id" : ObjectId("586b744f4b9a835fefb10ca7"), 
    "name" : "arjun", 
    "countries" : {
        "country" : [
            {
                "name" : "russia pakistan"
            }, 
            {
                "name" : "india iraq"
            }
        ]
    }
}
我想要一份只有
俄罗斯
的文件。理想情况下,它应该是得分最高的一个,但我得到的是类似于
“找到了3个命中率。”

文件**0.12874341**
文件**0.12874341**
文件**0.12874341**

所有3个结果得分相等。如何获得得分最高的只有
俄罗斯
的文档?

在短语查询中,slop默认为零,需要精确匹配。这意味着如果以这种方式修改查询:

query query = new PhraseQuery.Builder()
                        .add(new Term("country","russia"))
                        .build();

你会得到你想要的。

实际上,如果在索引时,我将feild保留为stringFeild,而不是text feild,并进行普通查询,而不是短语查询,但我需要feild为textfield,那么它是有效的。
query query = new PhraseQuery.Builder()
                        .add(new Term("country","russia"))
                        .build();