Я пытаюсь получить синонимы из нескольких слов с токенизацией ключевых слов, работающие с API _analyze. API возвращает ожидаемые результаты для синонимов из одного слова, но не для синонимов из нескольких слов. Вот моя цепочка настроек и анализа:
curl -XPOST "http://localhost:9200/test" -d'
{
"settings": {
"index": {
"analysis": {
"filter": {
"my_syn_filt": {
"type": "synonym",
"synonyms": [
"foo bar, fooo bar",
"bazzz, baz"
]
}
},
"analyzer": {
"my_synonyms": {
"filter": [
"lowercase",
"my_syn_filt"
],
"tokenizer": "keyword"
}
}
}
}
}
}'
Теперь протестируйте с помощью _analyze API:
curl 'localhost:9200/test/_analyze?analyzer=my_synonyms&text=baz'
Вызов возвращает то, что я ожидал (такой же результат возвращается и для 'bazzz'):
{
"tokens": [
{
"position": 1,
"type": "SYNONYM",
"end_offset": 3,
"start_offset": 0,
"token": "bazzz"
},
{
"position": 1,
"type": "SYNONYM",
"end_offset": 3,
"start_offset": 0,
"token": "baz"
}
]
}
Теперь, когда я пробую тот же вызов с текстом синонима из нескольких слов, API возвращает только один токен типа «слово», без синонимов:
curl 'localhost:9200/test/_analyze?analyzer=my_synonyms&text=foo+bar'
(возвращается)
{
"tokens": [
{
"position": 1,
"type": "word",
"end_offset": 7,
"start_offset": 0,
"token": "foo bar"
}
]
}
Почему API-интерфейс анализа не возвращает токены «foo bar» И «fooo bar» с типом SYNONYM?