Я работаю с функцией synonym_graph в ElasticSearch, и, похоже, она работает нормально.
Я пытался визуально понять, как работает новый synonym_graph и разбивает слова, тестируя анализатор напрямую, используя
GET my_index/_analyze
{
"text": "I really love eating lots and lots of fried cheese",
"analyzer": "my_analyzer"
}
И мне было интересно, что означает вывод анализатора.
В этом примере термин «жареный сыр» имеет несколько определенных синонимов, некоторые из них состоят из нескольких слов, а некоторые — из одного слова.
fried cheese => fried cheese, mozzarellasticks, Queso Frito, cheesecurd, friedmozzarella
Выход анализатора
{
"tokens" : [
{
"token" : "i",
"start_offset" : 0,
"end_offset" : 1,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "realli",
"start_offset" : 2,
"end_offset" : 8,
"type" : "<ALPHANUM>",
"position" : 1
},
{
"token" : "love",
"start_offset" : 9,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 2
},
{
"token" : "eat",
"start_offset" : 14,
"end_offset" : 20,
"type" : "<ALPHANUM>",
"position" : 3
},
{
"token" : "lot",
"start_offset" : 21,
"end_offset" : 25,
"type" : "<ALPHANUM>",
"position" : 4
},
{
"token" : "lot",
"start_offset" : 30,
"end_offset" : 34,
"type" : "<ALPHANUM>",
"position" : 6
},
{
"token" : "friedchees",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 4
},
{
"token" : "fri",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7
},
{
"token" : "mozzarellastick",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 4
},
{
"token" : "queso",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 2
},
{
"token" : "cheesecurd",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 4
},
{
"token" : "friedmozzarella",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 4
},
{
"token" : "fri",
"start_offset" : 38,
"end_offset" : 43,
"type" : "<ALPHANUM>",
"position" : 7,
"positionLength" : 3
},
{
"token" : "chees",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 8,
"positionLength" : 3
},
{
"token" : "frito",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 9,
"positionLength" : 2
},
{
"token" : "chees",
"start_offset" : 44,
"end_offset" : 50,
"type" : "<ALPHANUM>",
"position" : 10
}
]
}
Я пытаюсь понять параметры токенов синонимов в этом результате. Возьмем в качестве примера синонимы «Queso Frito».
{
"token" : "frito",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 9,
"positionLength" : 2
}
{
"token" : "queso",
"start_offset" : 38,
"end_offset" : 50,
"type" : "SYNONYM",
"position" : 7,
"positionLength" : 2
}
Что означают все прилагаемые параметры? "start_offset", "end_offset", "position", "positionLength"