gpt4 book ai didi

elasticsearch - 如何获得多个精确匹配词组

转载 作者:行者123 更新时间:2023-12-02 22:09:54 26 4
gpt4 key购买 nike

以下是获取精确匹配的查询

GET courses/_search
{
"query": {
"term" : {
"name.keyword": "Anthropology 230"
}
}
}
我需要找到 Anthropology 230Anthropology 250 also如何获得精确匹配

最佳答案

您正在做的错误是您在关键字字段上使用了术语查询并且它们都没有被分析,这意味着它们试图在倒排索引中找到完全相同的搜索字符串。
你应该做的是:定义一个 text如果您尚未定义映射,您无论如何都会拥有该字段。我也假设与您在查询中提到的相同 .keyword如果您没有定义映射,它会自动创建。
现在你可以在下面使用 match query分析和使用 standard analyzer它在空格上分割 token ,所以 Anthropology 250230将为您的 2 个示例文档生成。
简单高效的查询,同时带来了文档

{
"query": {
"match" : {
"name" : "Anthropology 230"
}
}
}
和搜索结果
 "hits": [
{
"_index": "matchterm",
"_type": "_doc",
"_id": "1",
"_score": 0.8754687,
"_source": {
"name": "Anthropology 230"
}
},
{
"_index": "matchterm",
"_type": "_doc",
"_id": "2",
"_score": 0.18232156,
"_source": {
"name": "Anthropology 250"
}
}
]
上述查询匹配两个文档的原因是它创建了两个 token anthropology230并匹配 anthropology在这两个文件中。
您绝对应该阅读 analysis process也可以试试 analyze API查看为任何文本生成的标记。
分析文本的 API 输出
POST http://{{hostname}}:{{port}}/{{index-name}}/_analyze
{
"analyzer": "standard",
"text": "Anthropology 250"
}


{
"tokens": [
{
"token": "anthropology",
"start_offset": 0,
"end_offset": 12,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "250",
"start_offset": 13,
"end_offset": 16,
"type": "<NUM>",
"position": 1
}
]
}

关于elasticsearch - 如何获得多个精确匹配词组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62876271/

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