2017-01-12 5 views
0

Meine Anfrage in lucene 6.2.0 geht so:Scoring Dokumente in Lucene 6.2.0

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

Grundsätzlich unter allen meine Dokumente, die sind:

{ 
    "_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" 
      } 
     ] 
    } 
} 

ich ein Dokument wollen die hat nur russia. Im Idealfall sollte es die eine höchste erzielte sein, sondern bekomme ich so etwas wie "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** 

Alle drei Ergebnisse sind gleichermaßen erzielt. Wie kann ich das Dokument mit der höchsten Punktzahl von russia erhalten?

Antwort

0

In Phrasenabfragen ist der Slop standardmäßig Null und erfordert genaue Übereinstimmungen. das bedeutet, wenn Sie Ihre Abfrage auf diese Weise ändern:

Sie erhalten, was Sie suchen.

+0

funktioniert tatsächlich, wenn ich während der Indizierung das Feld als StringFeild anstelle von Text feild halte und eine normale Abfrage und keine Phrasenabfrage mache, aber ich brauche das Feld, um TextFeild zu sein. –