2016-08-05 38 views
1

Ich baue einen Chatbot mit elasticsearch und ich kann nicht herausfinden, wie man es so verhält, wie ich will.Elasticsearch mit ähnlichen Sätzen in Arrays

Ich habe Frage Objekte dieses Format in einem Index ‚/ Fragen/q‘:

{ 
    "name": "some question" //just for identification, 
    "questions": [ 
     "Is ice cream good?", 
     "Is ice cream delicious?", 
     "Will i love the taste of ice cream?" 
    ], 
    "response": "yes" 
} 

Ich möchte eine Eingabefrage gegen die Fragen Array entsprechen, wo die höchste Punktzahl ist das Objekt, das die besten hat einzelne passende Frage. Im Wesentlichen möchte ich, dass die Punktzahl des Objekts die Punktzahl der höchsten Frage in der Matrix ist.

Derzeit bin ich mit einer Abfrage wie folgt aus:

{ 
    "query": { 
     "match": { 
     "questions": { 
      "query": "where can i buy tickets" 
     } 
     } 
    } 
} 

Aber seine mich sehr niedrige Werte zu geben, wenn das Array groß ist, weil ich denke, es ist das Array als eine große Zeichenfolge abflacht.

Welche Art von Abfrage sollte ich für diesen Anwendungsfall verwenden?

Antwort