Как найти наиболее часто используемые фразы в 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 для достижения того, что вы хотите (и, вероятно, больше.)