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

我正在使用elasticsearch 1.1.2。

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

例:

{“ multi_match”:{“ query”:“这是一个测试”,“ fields”:[“ title ^ 3”,“ description ^

2”,“ body”]}}

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

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

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

-如果找到完全匹配的标题,则使标题的系数为3:标题包含“伤害”一词。

-如果找到同义词,则为标题提供2的系数:标题包含单词“ bruise”。

-如果找到词干,则为标题赋予系数1:标题包含“伤害”一词。

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

谢谢!

回答:

您可以通过在值上使用多字段映射来实现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为同义词/词干定制分数 的全部内容, 来源链接: utcz.com/qa/404568.html

回到顶部