2016-07-15 9 views
2

Ich möchte ein Dokument abgleichen, dessen Feld title den Wert brown fox hat, indem ich mit dem Schlüsselwort brownfox suche.Elasticsearch - wie zu Fuzzy-Match-Phrase, wenn Such-Keyword keine Leerzeichen hat?

Wenn diese fuzzy Abfrage versucht, erhalte ich keine Ergebnisse:

curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{ 
    "query" : { 
     "fuzzy" : { 
      "title": { 
       "value": "brownfox", 
       "fuzziness": 2, 
       "prefix_length": 0, 
       "max_expansions": 10000 
      } 
     } 
    } 
}' 

Ich habe auch versucht eine match Abfrage mit Unschärfen und Betreiber and:

curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{ 
    "query": { 
     "match": { 
     "title": { 
      "query":  "brownfox", 
      "fuzziness": "AUTO", 
      "operator": "and" 
     } 
     } 
    } 
}' 

Dies liefert Ergebnisse mit ähnlichen Such, aber nicht die Dokument mit dem Titel brown fox, die ich für eine bessere Übereinstimmung halten würde.

Ich lese auch die Antwort auf this SO Frage, aber ich habe nicht die Option, den Analysator des Feldes mit Synonymen zu aktualisieren, da ich auch andere ähnliche Fälle, einschließlich fehlende Leerzeichen und falsch buchstabiert Wörter.

Danke!

+0

Was ist das Mapping dieses Titelfelds? Es sollte zumindest einen Analysator haben, der "braunen Fuchs" als einen einzigen Begriff behalten würde. Wenn es einen "Standard" -Analysator verwendet oder irgendetwas, das nicht "Braunfuchs" als Ganzes enthält, ist das nicht möglich. –

+0

Ja, ich fürchte, ich muss es sowohl mit als auch ohne Leerzeichen indexieren. Aus irgendeinem Grund hatte ich den Eindruck, dass es mit der Levenshtein Edit Distance übereinstimmen würde, ich denke nicht .. – fips

+0

Es benutzt das, aber der Begriff, den es betrachtet, ist 'braun' und' fox'. Sie wollen "Brauner Fuchs" betrachten. –

Antwort

1

Die Zuordnung dieses Felds title sollte mindestens einen Analysator haben, der "brown fox" als einen einzelnen Ausdruck beibehalten würde. Wenn es standard Analysator oder irgendetwas verwendet, das nicht brown fox als Ganzes hält, werden Sie nicht in der Lage sein, das zu vergleichen.

Verwandte Themen