Suche nach Namen(text) mit Leerzeichen in elasticsearch
Suche nach Namen(text) mit Leerzeichen, verursacht problem für mich,
Ich habe das mapping ähnlich wie
"{"user":{"properties":{"name":{"type":"string"}}}}"
Ideal, was es zurückgeben sollte, und Rang die Ergebnisse wie folgt
1) Bring on top names that exact match the search term (highest score)
2) Names that starts with the search term (high score)
3) Names that contains the exact search term as substring (medium score)
4) Names that contains any of the search term token (lowest score)
Beispiel
Für die folgenden Namen in elasticsearch
Maaz Tariq
Ahmed Maaz Tariq
Maaz Sheeba
Maaz Bin Tariq
Sana Tariq
Maaz Tariq Ahmed
Suche nach "Maaz Tariq" , sollten die Ergebnisse werden in der folgenden Reihenfolge
Maaz Tariq (highest score)
Maaz Tariq Ahmed (high score)
Ahmed Maaz Tariq (medium score)
Maaz Bin Tariq (lowest score)
Maaz Sheeba (lowest score)
Sana Tariq (lowest score)
Kann jeder ein zeigen Sie mir, wie und welche Analysatoren zu verwenden? und wie, um die Rangfolge der Suchergebnisse für Namen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die multi-Feld-Typ, ein bool query und die benutzerdefinierte boost-Faktor " query um dieses problem zu lösen.
Mapping:
Abfrage:
edit:
Wie bereits von javanna, die
custom_boost_factor
ist nicht erforderlich.Abfrage ohne
custom_boost_factor
:boost
option?Boost
ist nicht erlaubt in einemshould
sub-Abfrage!? (Zumindest weiß ich nicht, die syntax für diese.) Und wie funktioniert eine phrase-query-filter arbeiten ohnespan_near
Abfrage und ohne diematch_phrase
Abfrage?boost
zu der sub-Abfrage ungültig.query
stattvalue
im Begriff Abfrage.Im Falle der Java-Api, wenn quering Zeichenfolgen mit Leerzeichen verwenden;
In eine Menge von anderen Abfragen, bekommen Sie nichts als Ergebnis
Und von Elasticsearch 1.0:
wurde:
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html