gpt4 book ai didi

elasticsearch - 使用Elasticsearch搜索多个不完整的单词

转载 作者:行者123 更新时间:2023-12-02 23:39:11 30 4
gpt4 key购买 nike

我有一个记录数据库,每个记录都有rightleft字段,并且这两个字段都包含文本。该数据库已用Elasticsearch索引。
我想搜索这些记录的两个字段,并找到在的任何字段中包含两个或多个带有某些前缀的单词的记录。搜索应足够具体,以仅查找查询中包含所有单词的记录,而不仅仅是其中一些。
例如,查询qui bro应当返回包含句子“褐狐狸跳过懒狗”的记录,但不包含包含句子“狐狸跳过懒狗”的记录。
我已经看到了如何perform prefix queries with Elasticsearch的描述(并且可以在一个字段中搜索一个单词时重现它)。
我还看到了如何perform multi-match queries一次搜索多个字段的描述。
但是我需要的是这些技术的某种组合,使我既可以一次搜索多个字段,又可以只查找单词的一部分。并且仅获取那些包含所有单词的记录,这些单词的部分包含在查询中。
我怎样才能做到这一点?任何方法都可以(前缀,ngram等)。
(注:我的问题在一定程度上可能是this one的重复,但是由于从未回答过,所以我希望我不要问我任何规则。)
=====================================
更新:
哦,我可能是问题的第一部分。这是似乎在我的Rails应用程序中起作用的语法(使用elasticsearch-rails gem):

response = Paragraph.search query: {bool: { must: [ { prefix: {right: "qui"}}, {prefix: {right: "bro"}} ] } }
或者,以纯Elasticsearch语法重新编写它:
{
"bool": {
"must": [
{ "prefix": { "right": "qui" }},
{ "prefix": { "right": "bro" }}
]
}
}
因此,我现在更新的问题是如何将此前缀搜索与multi_match搜索结合使用(同时通过 rightleft字段进行搜索。

最佳答案

好的,这是一个可行的答案。该代码必须在多个字段中搜索几个不完整的单词,并仅返回包含所有这些单词的记录。

这是用elasticsearch-rails语法编写的请求:

response = Paragraph.search query: {bool: { must: [ { multi_match: { query: "qui", type: "phrase_prefix", fields: ["right", "left"]}}, { multi_match: { query: "brow", type: "phrase_prefix", fields: ["right", "left"]}}]}}

或者,用Elasticsearch网站上使用的语法重新编写:
{query:
{bool:
{ must:
[
{ multi_match:
{
query: "qui",
type: "phrase_prefix",
fields: ["right", "left"]
}
},
{ multi_match:
{
query: "brow",
type: "phrase_prefix",
fields: ["right", "left"]
}
}
]
}
}
}

这似乎有效。但是,如果有人有其他解决方案(尤其是这些解决方案使搜索不区分大小写),我将很高兴听到他们的声音。

关于elasticsearch - 使用Elasticsearch搜索多个不完整的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25733695/

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