Elasticsearch 匹配数组中相似句子

我正在使用 Elasticsearch 构建一个聊天机器人,但我无法让它按照我的期望运行。

我在索引 ‘/questions/q’ 中有这种格式的问题对象:

{    "name": "some question" //仅用于标识,    "questions": [        "Is ice cream good?",        "Is ice cream delicious?",        "Will i love the taste of ice cream?"    ],    "response": "yes"}

我想将输入的问题与 questions 数组进行匹配,其中得分最高的对象是其数组中最佳匹配问题的那一个。也就是说,我希望对象的得分是其数组中最高问题的得分。

目前,我使用了类似于以下的查询:

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

但是如果数组很大,它会给我非常低的得分,我想是因为它将数组展平为一个大字符串。

对于这种用例,我应该使用什么类型的查询?


回答:

你应该使用嵌套数据类型,这不仅能解决你的问题,还能防止像“is love good?”这样的字符串匹配到这组问题。

了解原因和方法,请查看 https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注