2013-08-15 2 views
6

패싯을 사용하여 대부분의 용어를 색인에서 찾을 수 있다는 것을 알고 있습니다. 다음 입력에 예를 들어 elasticsearch에서 가장 많이 사용되는 문구를 찾는 방법?

:

B:3 
AA:3 
A:2 
BB:2 
CC:1 
C:1 

하지만 그게 가능한 다음 목록에 궁금 해요 : :

"A B C" 
"AA BB CC" 
"A AA B BB" 
"AA B" 

용어면이 반환

AA B:2 
A B:1 
BB CC:1 

....etc... 

인가를 ElasticSearch에는 이러한 기능이 있습니까?

+2

아마도 'shingle'분석기를 사용하는 필드에서 맞춤 분석기를 정의 해보십시오. 이렇게하면 단어를 조합하여 토큰을 만듭니다 (묻는 것처럼). 그런 다음 패싯에서 이러한 결합 된 토큰에 대한 카운트가 반환되는지 확인하려고 할 수 있습니다. [싱글 표지 토큰 필터에 대한 정보는보십시오] – ramseykhalaf

+0

감사합니다. 이것은 작동 할 수도 있습니다. 패싯은 토큰을 반환하므로 대부분이 phrase_tokens도 반환합니다. 그러나 이것은 기존 인덱스에는 적용 할 수 없으며 파일 크기가 너무 커집니다. 매일 5GB의 내 데이터에이 기능이 필요합니다. 그날이 끝나면 더 이상 필요가 없습니다. 따라서 매일 5GB의 데이터를 색인으로 작성하고 패싯 결과를 저장 한 다음 새 색인 데이터를 삭제하는 것이 가장 좋습니다. (이것은 계속 반복 될 것입니다) 다른 옵션은 무엇입니까? – shyos

+0

답변은 http://stackoverflow.com/questions/39380463/get-top-100-most-used-three-word-phrases-in-all-documents에 있습니다. – AlexG

답변

2

ramseykhalaf의 코멘트에서 언급했듯이 싱글 필터는 길이가 "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" 
      } 
     } 
    } 
} 

자세한 내용은 blog post을 참조하십시오.

+0

대상을 추가했으며, 생각합니다. 작동하지만 http://www.elasticsearch.org/blog/searching-with-shingles/still을 사용하면 가장 많이 사용되는 문구를 찾을 수 없습니다. 우리는 패싯과 대상 포진을 어떻게 사용합니까? http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-terms-stats-facet.html, 나는 여전히 한 단어의 결과를 얻습니다. "{ term : 1, count : 203} ","{term : "대상 포진은": count 5} "를 얻으려면 어떻게해야합니까? –

+0

나는 똑같은 문제가있다 - 나는 아직 시도하지 않았다. 그러나 당신이 shingled 필드에서 aggregation/faceting을하면 도움이 되는가? 나는 분석에서 형태소 분석에 대해 확신하지 못한다. 예를 들어, "물 구멍"과 "물 구멍"과 "물결 모양의 구멍"이있을 경우 똑같지 만 어쩌면 그렇게해서는 안됩니다. http://project.carrot2.org/index.html은 실제로 이것을 위해 만들어졌지만, 탄성 검색만으로 할 수 있다면 멋질 것입니다. – Yehosef

+0

용어 및 중요 용어 집계가 토글 링 토큰과 함께 작동하지 않습니다. 왜 아직 모릅니다. –

0

elasticsearch를 사용하면 네이티브 방식으로이 작업을 수행 할 수 있는지 확실하지 않습니다. 그러나 Carrot2 - http://project.carrot2.org/index.html을 확인해보고 싶을 수도 있습니다.

관련 문제