2017-05-12 3 views
1

Ich versuche, eine Suchmaschine für ein Projekt einzurichten, das eine title Eigenschaft auf drei Arten analysiert.Relative Gewichtung zwischen Feldern einer Eigenschaft elasticsearch

  1. Standardtext
  2. ngram Analyse
  3. Stichwort passende passende

möchte ich auch die relative Scoring aller mit diesen Analysen in der gleichen Priorität gewichtet Übereinstimmungen gefunden.

Hier ist meine aktuelle Zuordnung für diesen

{ 
    "properties": { 
     "title": { 
      "type": "text", 
      "analyzer": "standard", 
      "fields": { 
       "keyword": { 
        "type": "keyword", 
        "boost: 1 
       }, 
       "ngram": { 
        "type": "text", 
        "analyzer": "custom_ngram_analyzer", 
        "boost": 2 
       } 
      }, 
      "boost": 4 
     }, 
     {... Other fields ...} 
    } 
} 

I

"query" => array(
     "multi_match" => array(
      "query" => $query, 
      "type" => "best_fields", 
      "fields" => array("title", "title.*", ...Other fields...), 
      "tie_breaker" => 0.3, 
      "minimum_should_match" => "30%" 
     ) 
    ) 
); 

Ist dies der beste Weg, um über die Anwendung diese benutzerdefinierten Gewichte (in der Reihenfolge eines Multi Spiel mit bin auf der Suche zu gehen specefied am Anfang dieser Frage)? Ich bin mit ElasticSearch nicht so erfahren, so dass ich wahrscheinlich irgendwo falsch liege.

Irgendwelche Ideen?

Antwort

0

Um benutzerdefinierte Gewichte in Ihrem multi_match query umfassen Sie es wie folgt schreiben sollte:

"query" => array(
     "multi_match" => array(
      "query" => $query, 
      "fields" => array("title^10", "tags^5", "content^3" ...Other fields...), 
      "tie_breaker" => 0.3, 
      "minimum_should_match" => "30%" 
     ) 
    ) 
); 

Und die Abfragetyp sollte nicht best_field in Ihrem Fall. Sie sollten es für den Standardwert belassen.
Wie Sie mit neuen Abfrage sehen können Sie Gewicht für jedes Feld explizit definieren.
um die Gewichte zu debuggen ist es sehr gut, explain Parameter in Ihrer Abfrage zu verwenden, so dass Sie bis zum endgültigen Ergebnis für jedes Dokument verfolgen können.

Verwandte Themen