2016-04-29 15 views
0

ich zur Zeit das bin mit ES-Abfrage Such Vorschlag von ES (mit Rand n g)Elasticsearch Abfrage für Mehrwortsuchvorschläge

var terms = query.split(' '), 
    baseTerms = terms.length === 1 ? '' : terms.slice(0, -1).join(' ') + ' ', 
    lastTerm = terms[terms.length - 1].toLowerCase(); 

"query": { 
     "simple_query_string": { 
     "fields": ['title.autocomplete'], //title.basic 
     "query": baseTerms + '(' + lastTerm + '|' + lastTerm + '*)', 
     "default_operator": "and" 
     } 
    } 

Was aber nur für einzelne Wörter funktioniert. Während ich Buchstaben eintippe, erscheinen Einzelwortvorschläge, aber ich versuche, Vorschläge mit mehreren Wörtern zu erhalten, die durch Leerzeichen getrennt sind (Satzvorschläge). Gibt es eine bessere ES-Abfrage, damit ich einige Phrasenvorschläge bekommen kann?

Antwort

0

Verwenden Sie match_phrase_prefix Query. Es wird Sie Phrasenvorschläge holen: ES Abfrage ist wie:

{ 
"match_phrase_prefix" : { 
    "message" : { 
     "query" : "quick brown f" 
    } 
    } 
} 
+0

muss ich auch var terms = query.split .... Code darüber loswerden? – user3125823

+1

Ja, Sie müssen nicht auf Platz teilen. – Richa

+0

danke .... noch lernen – user3125823