gpt4 book ai didi

elasticsearch 为同义词/词干化定制分数

转载 作者:行者123 更新时间:2023-11-29 02:49:12 26 4
gpt4 key购买 nike

我正在使用 elasticsearch 1.1.2。

我在可搜索字段上使用具有不同权重的多匹配查询。

例子:

{ “多匹配”:{ “查询”:“这是一个测试”, “字段”:[“标题^3”,“描述^2”,“正文”] }

所以在我的示例中,标题的重要性是正文的三倍。

我想根据找到的匹配自定义为每个字段指定的权重。

假设我搜索“伤害”,我想:

-如果找到完全匹配,则给标题一个系数 3:标题包含单词“injury”。

- 如果找到同义词,则给标题一个系数 2:标题包含单词“bruise”。

-如果发现词干提取,则将标题的系数设为 1:标题包含单词“injuries”。

有没有办法进行这种定制?

谢谢!

最佳答案

您可以使用 multi-fields 来实现这一点映射到您的 title 值。

它允许您将多种类型映射到相同的输入值,从而使用不同的分析器。

假设您已经为同义词和词干定义了自定义分析器,请尝试更新您的映射:

PUT /<index_name>/<type_name>/_mapping
{
"<type>": {
"properties": {
"title": {
"type": "string",
"fields": {
"exact": {
"type": "string",
"index": "not_analyzed"
},
"synonym": {
"type": "string",
"index": "analyzed",
"analyzer": "synonym_analyzer"
},
"stemmed": {
"type": "string",
"index": "analyzed",
"analyzer": "stemming_analyzer"
}
}
}
}
}
}

下面的查询应该符合你的要求:

POST /<index_name>/<type_name>/_search
{
"query": {
"multi_match": {
"query": "injury",
"fields": [
"title.exact^3",
"title.synonym^2",
"title.stemmed"
]
}
}
}

关于elasticsearch 为同义词/词干化定制分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305250/

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