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!
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. –
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
Es benutzt das, aber der Begriff, den es betrachtet, ist 'braun' und' fox'. Sie wollen "Brauner Fuchs" betrachten. –