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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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