gpt4 book ai didi

search - 多个单词匹配(全文)在 Elasticsearch 中的单个或多个文档中

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

我的要求是这样的:

如果我将多个单词作为列表传递给搜索,ES 将返回包含单词匹配子集的文档以及匹配的单词,这样我就可以了解哪个文档与哪个子集匹配。

假设我需要搜索诸如 Football、Cricket、Tennis、Golf 等单词。
在三个文件中

我打算将这些文件存储在相应的文档中。 “mydocuments”索引的映射如下所示:

{
"mydocuments" : {
"mappings" : {
"docs" : {
"properties" : {
"file_content" : {
"type" : "string"
}
}
}
}
}
}

第一份文件
{ _id: 1, file_content: "I love tennis and cricket"}

第二份文件:
{ _id: 2, file_content: "tennis and football are very popular"}

第三份文件:
{ _id: 3, file_content: "football and cricket are originated in england"}

I should be able to search a single file/or multiple files for Football, Tennis, cricket, golf and it should return something like this



像这样的东西
    "hits":{
"total" : 3,
"hits" : [
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_source" : {
"file_content" : ["football","cricket"],
"postDate" : "2009-11-15T14:12:12",

}
},
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "2",
"_source" : {
"file_content" : ["football","tennis"],
"postDate" : "2009-11-15T14:12:12",

}
}
]

或者在多个文件搜索的情况下,上述搜索结果的数组

知道我们如何使用 Elasticsearch 做到这一点吗?

如果这真的不能使用 Elasticsearch 来完成,我准备评估任何其他选项(Native lucene,Solr)

编辑

我的不好可能是我没有提供足够的细节。 @Andrew我所说的文件是在ES文档中存储为字符串字段(全文)的文件的文本内容。假设一个文件对应一个文档,该文档在名为“file_content”的字段中具有文本内容字符串。

最佳答案

最接近你想要的东西是highlighting ,意味着强调文档中的搜索词。

示例查询:

{
"query": {
"match": {
"file_content": "football tennis cricket golf"
}
},
"highlight": {
"fields": {"file_content":{}}
}
}

结果:

“命中”:{
“总数”:3,
“最大分数”:0.027847305,
“命中”:[
{
"_index": "test_highlight",
"_type": "文档",
“_id”:“1”,
“_score”:0.027847305,
“_来源”: {
"file_content": "我喜欢网球和板球"
},
“强调”: {
“文件内容”:[
“我喜欢 网球板球
]
}
},
{
"_index": "test_highlight",
"_type": "文档",
“_id”:“2”,
“_score”:0.023869118,
“_来源”: {
"file_content": "网球和足球很受欢迎"
},
“强调”: {
“文件内容”:[
网球足球很受欢迎”
]
}
},
{
"_index": "test_highlight",
"_type": "文档",
“_id”:“3”,
“_score”:0.023869118,
“_来源”: {
"file_content": "足球和板球起源于英格兰"
},
“强调”: {
“文件内容”:[
footballcricket 起源于英国”
]
}
}
]
}

如您所见,找到的术语在特殊的 <em> 下突出显示(由 highlight 标记包围的元素)部分。

关于search - 多个单词匹配(全文)在 Elasticsearch 中的单个或多个文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30931246/

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