Как найти наиболее часто используемые фразы в elasticsearch?
Я знаю, что вы можете найти наиболее часто используемые термины в индексе с использованием фасетов.
например, на следующих входах:
"A B C"
"AA BB CC"
"A AA B BB"
"AA B"
термин facet возвращает это:
B:3
AA:3
A:2
BB:2
CC:1
C:1
но мне интересно, что можно перечислить следующие:
AA B:2
A B:1
BB CC:1
....etc...
есть ли такая функция в ElasticSearch?
2 ответов
Как упоминалось в комментарии рамсейхалафа, галька фильтр будет производить маркеры длины" n " слов.
"settings" : {
"analysis" : {
"filter" : {
"shingle":{
"type":"shingle",
"max_shingle_size":5,
"min_shingle_size":2,
"output_unigrams":"true"
},
"filter_stop":{
"type":"stop",
"enable_position_increments":"false"
}
},
"analyzer" : {
"shingle_analyzer" : {
"type" : "custom",
"tokenizer" : "whitespace",
"filter" : ["standard," "lowercase", "shingle", "filter_stop"]
}
}
}
},
"mappings" : {
"type" : {
"properties" : {
"letters" : {
"type" : "string",
"analyzer" : "shingle_analyzer"
}
}
}
}
посмотреть этот блоге для полной информации.
Я не уверен, что elasticsearch позволит вам сделать это так, как вы хотите изначально. Но вам может быть интересно проверить Carrot2 -http://project.carrot2.org/index.html для достижения того, что вы хотите (и, вероятно, больше.)