У меня есть около 15 000 очищенных сайтов с текстом их тела, хранящихся в индексе эластичного поиска. Мне нужно, чтобы получить 100 наиболее часто используемые фразы трех слов используется во всех этих текстах:Получить 100 самых используемых трех словосочетаний во всех документах
Что-то вроде этого:
Hello there sir: 203
Big bad pony: 92
First come first: 56
[...]
Я новичок в этом. Я просмотрел векторы сроков, но они, похоже, применимы к отдельным документам. Поэтому я считаю, что это будет комбинация терминальных векторов и агрегации с n-граммовым анализом. Но я не знаю, как это реализовать. Любые указатели будут полезны.
Мое текущее отображение и настройки:
{
"mappings": {
"items": {
"properties": {
"body": {
"type": "string",
"term_vector": "with_positions_offsets_payloads",
"store" : true,
"analyzer" : "fulltext_analyzer"
}
}
}
},
"settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
},
"analysis": {
"analyzer": {
"fulltext_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"type_as_payload"
]
}
}
}
}
}
Это прекрасно работает! Спасибо, Питер! – HyderA
Только один вопрос, как мне сделать несколько фраз с одним полем. Например, слова с двумя словами, фразы с четырьмя словами и т. Д.? Мне нужно создать индекс для каждого анализатора? – HyderA
Вид. Создайте отдельные поля с отдельными анализаторами и просто скопируйте содержимое тела всем им. Затем вы можете выполнить грань на каждом специально построенном гальке. –