2017-07-18 4 views
0

Welche Bedeutung hat die Token-Position für das Scoring? Ich würde erwarten, wenn das Token übereinstimmt, dass ein Token 1 in Position 2.Position der ElasticSearch-Token-Position für das Scoring?

in den Ergebnissen als die Token in Position höher zurückgeführt zu werden habe ich einen Index mit Orange Kokosnuss Apfel Kokosnuss Orange Apfel Kokosnuss Apfel Orange Kokosnuss rot orange

Suchen Sie nach dem Wort "Kokosnuss" mit einer Übereinstimmungsabfrage.

Es ist in diesen Positionen 1 Orange Kokosnuss Apfel 2 Kokosnuss rot orange 3 Kokos Orange Apfel 4 Kokosnuss Apfel Orange zurück

ich erwarten würde Orange Kokosnuss Apfel 4. kehrte zu sehen.

Warum passiert das und was ist die Lösung/Einstellung, die ich vermisse?

Dank

PUT name 
{ 
    "template": "name*", 
    "mappings": { 
    "name": { 
     "_all": { 
     "enabled": false 
     }, 
     "properties": { 
     "name": { 
      "type": "text", 
      "analyzer": "standard" 
     } 
     } 
    } 
    } 
} 

PUT name/name/1 
{ 
    "name" : "orange coconut apple" 
} 
PUT name/name/2 
{ 
    "name" : "coconut orange apple" 
} 
PUT name/name/3 
{ 
    "name" : "coconut red orange" 
} 
PUT name/name/4 
{ 
    "name" : "coconut apple orange" 
} 

GET name/_search 
{ 
    "query": { 
     "match" : { "name" : "coconut" } 
    } 
} 

Antwort

0

versuchen, ein match phrase query innerhalb einer Booleschen Abfrage, wo Sie Ihre obige Abfrage ist eine must Klausel und die Abfrage Match Phrase ist eine should Klausel.

Eine Erklärung Prüfung Elasticsearch - The definitive guide

ich die ganzen search in depth Kapitel sehr zu lesen empfehlen, da dies für die Steuerung Relevanz in Abfragen eine Menge Dinge löscht, die nicht offensichtlich sind.

+0

Dank @alr, ich werde in diesen Abschnitten nachlesen meinst du so? Wenn ja, ändert sich die Reihenfolge nicht. 'GET Name/_search { "Abfrage": { "Bool": { "Muss": [ { "match": { "name": "coconut"} } ], "sollte": [{ "match_phrase": { "name": "coconut"} } ] } } } ' – Insy

+0

oh, tut mir leid, ich falsch verstanden Ihre Anfrage und dachte, es enthielt zwei Wörter. Positionen werden nicht berücksichtigt, es sei denn, Sie führen Näherungs-/Phrasenabfragen durch. Sie können sich die [span query family] (https://www.elastic.co/guide/en/elasticsearch/reference/5.5/span-queries.html) ansehen und diese in einer should-Klausel verwenden. – alr