Genaue übereinstimmungen mit ElasticSearch (zum Zeitpunkt der Abfrage)

Habe ich eine Orte-index, die viele der Ortsnamen und Ihren jeweiligen Ländern.

Dann möchte ich wissen, ob wir haben Standorte mit dem Titel "Berlin" in das Land mit country code "DE".

Hier mein Java-code-Versuch:

SearchResponse response = client.prepareSearch("locations")
                .setQuery(QueryBuilders.matchQuery("title", "Berlin"))
                .setFilter(FilterBuilders.termFilter("country", "DE"))
                .execute()
                .actionGet();

Aber das gibt mir zu viele Antworten, z.B. Ergebnisse für "Zoo Berlin" und so weiter. Ich brauche genaue übereinstimmungen.

(Beachten Sie aber bitte, dass ich andere Szenarien, in denen diese Zeichenfolge/text search-matching gewünscht ist.)

Gibt es eine Möglichkeit, zu entscheiden, auf die Abfrage, und nicht an der Indizierung, die das Verhalten (exakt vs. analysierten text) man will?

  • Durch exakte übereinstimmung, meinst du "berlin" sollte übereinstimmen "Berlin"?
  • Ja, zum Beispiel. (Und ich kümmere mich nicht zu viel über den Fall hier.) Aber wenn "Berlin" passt zu "Berlin Hauptbahnhof", das ist problematisch.
InformationsquelleAutor Michael Junk | 2013-08-23
Schreibe einen Kommentar