我正在使用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"
]
}
}
}
问题内容: 编辑:要补充一点,同义词似乎可以与基本的查询字符串查询一起使用。 这将返回新罕布什尔州的所有结果,但对“ nh”的“匹配”查询将不返回结果。 我正在尝试将同义词添加到我的Elastic索引中的位置字段中,这样,如果我对“质量”,“马”或“马萨诸塞州”进行位置搜索,则每次都会得到相同的结果。我将同义词过滤器添加到设置中,并更改了位置映射。这是我的设置: 以及location.region
问题内容: 是否可以在索引中存储elasticsearch的同义词?还是可以从像ouchdb这样的数据库中获取同义词列表?我想通过REST- API将同义词动态添加到elasticsearch。 问题答案: 使用同义词有两种方法: 在编制索引时扩展它们, 在查询时扩展它们。 不建议在查询时扩展同义词,因为它会引起以下问题: 评分,因为同义词具有不同的文档频率, 多令牌同义词,因为查询解析器在空白处
我试图用_analyze API获得关键字标记的多字同义词。API对单字同义词返回预期结果,但对多字同义词不返回预期结果。以下是我的设置和分析链: 为什么analyze API不返回具有同义词类型的“foo bar”和“fooo bar”标记?
问题内容: 我有一个现有的Elasticsearch索引,我想添加一个分析器,但是当我执行此命令时 我得到一个错误 {“错误”:“ IndexAlreadyExistsException [[nuxeo]已经存在]”,“状态”:400} 所以我必须在添加或刷新同义词文件之前删除索引不是很聪明。添加分析器的简单方法是吗?还是至少要刷新它?谢谢 问题答案: 您需要先关闭索引,更新分析器设置,然后再打开
我创建了一个数据框,其中包含要被词干化的句子。我想用雪球机来获得更高的分类算法精度。我该如何实现这一点?
问题内容: 我想在elasticsearch中更改评分系统,以摆脱对一个术语的多次出现计数的麻烦。例如,我想要: “德克萨斯州德克萨斯州” 和 “得克萨斯州” 得分相同。我发现elasticsearch表示该映射将禁用词频统计,但是我的搜索结果却不一样: } 任何帮助将不胜感激,我无法找到很多有关此的信息。 编辑: 我正在添加搜索代码,并在使用解释时返回了什么。 我的搜索代码: 当我搜索解释时,我