Я хочу построить анализатор вasticsearch, который игнорирует регистры его входных данных при сравнении, но возвращает чувствительные к регистру результаты.
Это мое реальное состояние:
Мой 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"
},
Мой файл синонимов ("Path / SynonymFile.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"]