2017-07-07 3 views
0

Ich habe eine sehr einfache Abfrage haben:Gibt es eine Möglichkeit, einen Score-Bereich (oder eine maximale Punktzahl) für eine Abfrage zu setzen

match: { 
    field => { 
    boost: 4, 
    query: term, 
    fuzziness: 'AUTO', 
    } 
} 

Komponiert mit mehreren (ca. 10) andere fragt die meisten von ihnen constant_score verwenden. Das Problem ist, dass meine Abfrage zu bestimmten Bedingungen eine zu hohe Punktzahl hat, die alle anderen Abfrageergebnisse abbricht.

ist hier ein Teil der Erklärung:

"details" => [ 
[0] { 
     "value" => 63.656006, 
"description" => "sum of:", 
    "details" => [ 
    [0] { 
       "value" => 63.656006, 
     "description" => "weight(title.de:kandinsky in 1694239) [PerFieldSimilarity], result of:", 
      "details" => [ 
      [0] { 
         "value" => 63.656006, 
       "description" => "score(doc=1694239,freq=1.0 = termFreq=1.0\n), product of:", 
        "details" => [ 
        [0] { 
           "value" => 4.0, 
         "description" => "boost", 
          "details" => [] 
        }, 
        [1] { 
           "value" => 11.3820715, 
         "description" => "idf, computed as log(1 + (docCount - docFreq + 0.5)/(docFreq + 0.5)) from:", 
[...] 

Hat Sie sehen können, habe ich eine Punktzahl von 11,38 auf Grund der IDF haben. Meine anderen Abfragen (mit Noten zwischen 1 und 3) sind völlig nutzlos.

Meine Frage ist:

Wie kann ich eine maximal mögliche Punktzahl für eine Abfrage festgelegt?

Oder noch besser, kann ich einen Bereich der Punktzahl für meine Abfrage festlegen?

Ich möchte eine constant_score Abfrage für dieses Feld vermeiden, ich brauche ein paar TF/IDF und Score-Begriff für dieses Feld, aber nicht so stark.

Ich versuchte dies:

function_score: { 
    query: { match: { 
    field => term, 
    }}, 
    score_mode: :avg, 
    script_score: { 
    script: { 
     inline: "4 * (1 + Math.log(2 + _score))", 
    } 
    }, 
} 

Es ist besser, aber es kann immer noch eine sehr hohe Punktzahl auf bestimmten Fällen durchzuführen.

Antwort

Verwandte Themen