Elasticsearch匹配数组中的类似句子

时间:2016-08-05 23:00:21

标签: string elasticsearch artificial-intelligence

我正在使用elasticsearch建立一个聊天机器人,我无法弄清楚如何让它像我想要的那样。

我在索引' / questions / 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"
}

我想将输入问题与问题数组匹配,其中得分最高的是具有最佳单一匹配问题的对象。所以基本上我希望对象的得分是其数组中最高问题的得分。

目前,我正在使用类似的查询:

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

但是如果数组很大,它会给我很低的分数,因为我猜它会把数组变成一个大字符串。

我应该为这个用例使用什么样的查询?

1 个答案:

答案 0 :(得分:0)

你应该使用嵌套的数据类型,它既可以解决你的问题,也可以防止像#34;这样的字符串是好的?"匹配这个问题集?

https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

了解原因及方法