gpt4 book ai didi

c# - Elasticsearch :与分析器的匹配查询不起作用

转载 作者:行者123 更新时间:2023-12-02 22:50:39 24 4
gpt4 key购买 nike

My goal is to search a word irrespective of the analyzer added to that.



我使用 关键字分析器匹配查询,但我认为它可以与添加到该属性的默认分析器一起使用。

在 flex 搜索中,我的作者文档结构就像
"_source": {
"Id": 3,
"Organization": "let123"
}

索引映射:
 createIndexDescriptor.NumberOfReplicas(1)
.NumberOfShards(1)
.Settings(
settings =>
settings
.Add("analysis.filter.autocomplete_filter_ngram.type", "edge_ngram")
.Add("analysis.filter.autocomplete_filter_ngram.min_gram", "2")
.Add("analysis.filter.autocomplete_filter_ngram.max_gram", "7")
.Add("analysis.analyzer.title_analyzer.type", "custom")
.Add("analysis.analyzer.title_analyzer.char_filter.0", "html_strip")
.Add("analysis.analyzer.title_analyzer.tokenizer", "standard")
.Add("analysis.analyzer.title_analyzer.filter.0", "lowercase")
.Add("analysis.analyzer.title_analyzer.filter.1", "asciifolding")
.Add("analysis.analyzer.title_analyzer.filter.2", "autocomplete_filter_ngram"))
.AddMapping<Author>(
m =>
m.MapFromAttributes()
.AllField(f => f.Enabled(true))
.Properties(
props =>
props.MultiField(
mf =>
mf.Name(t => t.Organization)
.Fields(fs => fs.String(s => s.Name(t => t.Organization).Analyzer("title_analyzer"))
))));

here i noted one of my title analyzer filter is ngram



但是我在匹配查询中使用了 关键字分析器来避免自动完成搜索。
GET /author/_search {
"query": {
"match": {
"Organization": {
"query": "le",
"analyzer": "keyword"
}
}
} }

但是当我搜索时,上面的文件是匹配的。
我期望的是具有“ le ”确切值的组织

为什么这样匹配?有什么想法可以实现我的目标吗?

最佳答案

通过在查询中指定分析器,您可以指示Elasticsearch如何分析已发送的查询。

例如:

GET /author/_search
{
"query": {
"match": {
"Organization": {
"query": "le",
"analyzer": "keyword"
}
}
}
}

告诉Elasticsearch在 keyword字符串上使用 le分析器。它不会影响已在您的存储数据( let123)上创建的索引词

更改存储数据分析方式的唯一方法是更新映射并为数据重新编制索引。

多场

在同一个字段上不可能有多个分析器,但是可以将数据轻松地存储在多个字段中(每个字段都有一个分析器)。

例如:
{
"tweet" : {
"properties" : {
"name" : {
"type" : "string",
"index" : "analyzed",
"fields" : {
"raw" : {"type" : "string", "index" : "not_analyzed"}
}
}
}
}
}

名称数据将自动存储在两个位置-字段 name(在其中进行分析)和 name.raw(在其中未进行分析)。参见 Multi Fields

关于c# - Elasticsearch :与分析器的匹配查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32565662/

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