gpt4 book ai didi

string - 在Elasticsearch中对关键字查询的句子

转载 作者:行者123 更新时间:2023-12-03 00:13:42 24 4
gpt4 key购买 nike

我正在构建一个问题机器人,直到现在我一直在使用mongodb。但是我只是发现了Elasticsearch,它看起来真的很强大。

我有一个“别名文档”数据库,这意味着每个文档都有一个“别名”字段,该字段包含有人可能称呼的可能名称的数组。

例如:

Events Collection:
{
name: "Birthday Party",
aliases: ["birthday", "birthday party", "birthday"],
place: "Tom's house"
},
{
name: "Bowling Night",
aliases: ["bowling", "bowling night"],
place: "Tom's Alley"
}

我的查询将是这样的句子:
“生日是几点钟?”
“保龄球在哪里?”

别名在数据库中是唯一的,因此在上述查询中,我希望它在第一个返回“生日聚会”文档,在第二个返回“保龄球之夜”文档。

我知道这是相当复杂的东西,目前我正在使用一种效率很低的方法,在该方法中,我将所有别名的数组保留在内存中,然后如果字符串包含它,则按它们进行搜索。

elasticsearch中是否存在可以执行以下操作的查询?

最佳答案

您可能并不需要做所有的“混叠”操作,Elasticsearch具有一些内置函数,这些函数将为您提供帮助,而且不会费劲!

例如,如果您索引以下文档:

{
"name": "Bowling Night"
}

默认情况下, name字段将另存为已分析的 string,这意味着Elasticsearch将为您标记并为其建立索引,因此在运行此查询时
{
"query": {
"query_string": "Where is bowling?"
}
}

它将把句子分解成单独的单词,并在每个单词之间添加“OR”条件,因此将与您索引的文档匹配。如果您有多个匹配项(它可以匹配的单词越多,则得分越高),它还将为文档提供一个得分,并根据得分进行排序。

有关 query string queriesAnalyzers的更多信息

关于string - 在Elasticsearch中对关键字查询的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38708198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com