我正在使用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"
}
}
}
}
但是如果数组很大,它会给我很低的分数,因为我猜它会把数组变成一个大字符串。
我应该为这个用例使用什么样的查询?
答案 0 :(得分:0)
你应该使用嵌套的数据类型,它既可以解决你的问题,也可以防止像#34;这样的字符串是好的?"匹配这个问题集?
在https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html
了解原因及方法