在Lucene 6.2.0中评分文档

时间:2017-01-12 11:13:49

标签: lucene

我在 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"
            }
        ]
    }
}

我想要一个只有russia的文档。理想情况下,它应该是得分最高的一个,但我得到像"Found 3 hits."

这样的东西
Document<stored,indexed,tokenized<id:586b723b4b9a835db416fa26> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<name:test> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<countries:{ "country" : [ { "name" : "russia"} , { "name" : "USA china"}]}> stored,indexed,tokenized<country:russia> stored,indexed,tokenized<country:USA china>>**0.12874341**

Document<stored,indexed,tokenized<id:586b73f24b9a835fefb10ca5> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<name:nitika jain> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<countries:{ "country" : [ { "name" : "russia and denmrk"} , { "name" : "USA china"}]}> stored,indexed,tokenized<country:russia and denmrk> stored,indexed,tokenized<country:USA china>>**0.12874341**

Document<stored,indexed,tokenized<id:586b744f4b9a835fefb10ca7> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<name:arjun> stored,indexed,tokenized,omitNorms,indexOptions=DOCS<countries:{ "country" : [ { "name" : "russia pakistan"} , { "name" : "india iraq"}]}> stored,indexed,tokenized<country:russia pakistan> stored,indexed,tokenized<country:india iraq>>**0.12874341**

所有3个结果都得分相同。如何才能获得仅有russia得分最高的文档?

1 个答案:

答案 0 :(得分:0)

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

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

你会得到你正在寻找的东西。