C# Elasticsearch NEST 5.x Koelner拼音不匹配
更新 我改变了问题的思路 我正在尝试用koelner语音学进行语音搜索,并且使用了ngram 我正在使用的索引配置:C# Elasticsearch NEST 5.x Koelner拼音不匹配,c#,
elasticsearch,nest,C#,
elasticsearch,Nest,更新 我改变了问题的思路 我正在尝试用koelner语音学进行语音搜索,并且使用了ngram 我正在使用的索引配置: { "testnew": { "settings": { "index": { "number_of_shards": "5", "provided_name": "testnew", "creation_date": "1489672932033", "analysis": {
{
"testnew": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "testnew",
"creation_date": "1489672932033",
"analysis": {
"filter": {
"koelnerPhonetik": {
"replace": "false",
"type": "phonetic",
"encoder": "koelnerphonetik"
}
},
"analyzer": {
"koelnerPhonetik": {
"type": "custom",
"tokenizer": "koelnerPhonetik"
},
"ngram_analyzer": {
"type": "custom",
"tokenizer": "ngram_tokenizer"
}
},
"tokenizer": {
"koelnerPhonetik": {
"type": "standard"
},
"ngram_tokenizer": {
"token_chars": [
"letter",
"digit",
"punctuation",
"symbol"
],
"min_gram": "2",
"type": "ngram",
"max_gram": "20"
}
}
},
...
}
}
}
}
}
我有一份文件是这样的:
{
"_index": "testnew",
"_type": "person",
"_id": "3",
"_score": 1,
"_source": {
"name": "Can",
"fields": {
"phonetic": {
"type": "string",
"analyzer": "koelnerPhonetik"
}
}
}
GET testnew/person/_mapping
"name": {
"type": "text",
"analyzer": "koelnerPhonetik"
}
它是这样映射的:
{
"_index": "testnew",
"_type": "person",
"_id": "3",
"_score": 1,
"_source": {
"name": "Can",
"fields": {
"phonetic": {
"type": "string",
"analyzer": "koelnerPhonetik"
}
}
}
GET testnew/person/_mapping
"name": {
"type": "text",
"analyzer": "koelnerPhonetik"
}
为什么在此查询中搜索“Kan”无法找到“Can”
GET testnew/person/_search
{
"query": {
"match": {
"name.phonetic": {
"query": "Kan"
}
}
}
}
您的字段名为
name
notname.keyword
@Val这不会产生任何结果,不确定为什么要删除.keyword
,因为分析器只处理您的name
字段,而不是name.keyword
(未按定义进行分析)@OHMR您的文档源与映射不匹配。映射不包含带有koelnerPhonetik
分析的name.peophonic
子字段的multi_字段。从文档中删除字段:{…}
,并将其添加到名称
字段下的映射中。