Jdbc Elasticsearch同义词区分大小写的结果
谁能告诉我我做错了什么。 我正试图用这种方式设置elasticsearchJdbc Elasticsearch同义词区分大小写的结果,jdbc,elasticsearch,lowercase,synonym,Jdbc,elasticsearch,Lowercase,Synonym,谁能告诉我我做错了什么。 我正试图用这种方式设置elasticsearch { "settings" : { "index" : { "analysis" : { "analyzer" : { "synonym" : { "type" : "custom", "tokenizer"
{
"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"type" : "custom",
"tokenizer" : "whitespace",
"filter" : ["en_US", "lowercase", "synonym"]
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
},
"en_US" : {
"type" : "hunspell",
"locale" : "en_US",
"dedup" : true
}
}
}
}
},
"mappings" : {
"jdbc" : {
"properties" : {
"Title" : {
"type" : "string",
"search_analyzer" : "synonym",
"index_analyzer" : "standard"
},
"Abstract" : {
"type" : "string",
"search_analyzer" : "synonym",
"index_analyzer" : "standard"
}
}
}
}
}
我的synonym.txt文件包含
beer, ale, lager, cark ale
Lithuania, Republic of Lithuania, Lithuanian
因此,现在是试用我的分析仪的时候了:
http://localhost:9200/jdbc/_analyze?text=beer&analyzer=synonym&pretty=true
它按预期工作并返回给我
{
"tokens" : [ {
"token" : "beer",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "ale",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "lager",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "cark",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
}, {
"token" : "ale",
"start_offset" : 0,
"end_offset" : 4,
"type" : "SYNONYM",
"position" : 1
} ]
}
然而,质疑这一点:
http://localhost:9200/jdbc/_analyze?text=Lithuanian&analyzer=synonym&pretty=true
将只返回:
{
"tokens" : [ {
"token" : "lithuanian",
"start_offset" : 0,
"end_offset" : 10,
"type" : "word",
"position" : 1
} ]
}
任何提示?在分析过程中,令牌筛选器将按指定的顺序应用。 因此,在上述情况下,“立陶宛”首先转换为小写的“立陶宛”。 由于同义词文件不包含此案例版本的标记,因此不会发生同义词转换。 中的本节将详细介绍这一点 根据用例的不同,有两种方法可以实现这一点:将自定义分析器中令牌过滤器的顺序更改为:
"synonym" : {
"type" : "custom",
"tokenizer" : "whitespace",
"filter" : ["en_US", "synonym","lowercase"]
}
上述内容仍然区分大小写,但转换将与上述内容一致
同义词.txt
或者,您可以将analysis/synonym.txt中的所有同义词设置为小写,并保持问题中指定的相同分析器设置。
例如:
这可能是我实际做的事情的重复。使每一个同义词都小写是最简单、快捷的解决方案。谢谢请记住,这会造成与CAT(医学扫描)和CAT(动物)等词的不匹配。
beer, ale, lager, cark ale
lithuania, republic of lithuania, lithuanian