【发布时间】:2020-02-09 09:56:47
【问题描述】:
我想在 elasticsearch 中构建一个分析器,在比较时忽略其输入的大小写,但返回区分大小写的结果。
这是我的实际状态:
用于创建分析器的我的 NEST 代码
{ "MySynonymFilter", new SynonymTokenFilter { SynonymsPath = "Path/SynonymFile.txt", Lenient = true} },
{
"MySynonymizer", new CustomAnalyzer
{
Tokenizer = "whitespace",
Filter = new List<string> {"lowercase", "MySynonymFilter"}
}
},
这是上面创建的分析器的样子:
"Synonymizer": {
"filter": [
"lowercase",
"MySynonymFilter"
],
"type": "custom",
"tokenizer": "whitespace"
},
我的同义词文件(“路径/同义词文件.txt”):
one, two, three, four => FIVE
这是实际结果和预期结果:
查询示例:
localhost:port/index/_analyze
{
"analyzer": "MySynonymizer",
"text": "Input"
}
实际结果:
Input: "one" Output: ["five"]
Input: "One tWo THREE" Output: ["five", "five", "five"]
Input: "one TWO foo" Output: ["five", "five", "foo"]
去掉小写过滤器后的结果:
Input: "one" Output: ["FIVE"]
Input: "One tWo THREE" Output: ["One", "tWo", "THREE"]
Input: "one TWO foo" Output: ["FIVE", "TWO", "foo"]
想要的结果:
Input: "one" Output: ["FIVE"]
Input: "One tWo THREE" Output: ["FIVE", "FIVE", "FIVE"]
Input: "one TWO foo" Output: ["FIVE", "FIVE", "foo"]
【问题讨论】:
-
你不能。同义词过滤器使用他之前的任何过滤器来解析同义词文件。
-
感谢您清理@MichaelIzvekov
标签: c# elasticsearch nest