1

与えられた入力 "速い茶色のキツネが飛んで"私は単語のためにすべての可能なトークンの組み合わせを作成したいと思います。ですから、例えば文字列がすべての可能な単語の組み合わせにトークン化

[ 
"quick", "quick brown", "quick fox", "quick jumped", 
"brown", "brown quick", "brown fox", "brown jumped", 
         ..., 
"jumped quick", "jumped brown", "jumped fox", "jumped" 
] 

にトークン化されるだろう、私はそれのためにshingle tokeniserを使用することができますが、それは唯一の隣接条件を連結して新しいトークンを作成し、私はで終わる:前方右のステップです

[ 
"quick", "quick brown", "quick brown fox", "quick brown fox jumped", 
"brown", "brown fox", "brown fox jumped", 
"fox", "fox jumped", 
"jumped" 
] 

私が探しているものではありません。

+0

あなたの後にあるユースケースについて説明できますか? – Val

+0

@Valロングストーリー短く - 単一の用語だけでなく(["クイック"、 "ブラウン"、 "キツキ"、 "ジャンプ"))、これらの単語/用語の組み合わせ –

答えて

0

あなたのコメントでは、ここでのユースケースは、ドキュメントに表示される単語の組み合わせの集計を得ることです。標準的なトークナイザを使用することはできますが、それでもその情報を得ることができます。

1:たとえば、あなたが「身体」フィールドを持つ文書を持っていると速い茶色のキツネが小さな犬

2飛び越え:小さな犬は、いくつかの食べ物を食べる

小さな犬:2

少しだから私はあなたのようなものを見てみたいと思います:2

犬:2人の

食べる:1

...

次に、あなたはこのように問い合わせることができます:

{ 
    "size": 0, 
    "aggs": { 
    "firstlevel": { 
     "terms": { 
     "field": "body" 
     }, 
     "aggs": { 
     "secondlevel": { 
      "terms": { 
      "field": "body" 
      } 
     } 
     } 
    } 
    } 
} 

、あなたが応答を取得like:

"aggregations": { 
    "firstlevel": { 
    "doc_count_error_upper_bound": 0, 
    "sum_other_doc_count": 1, 
    "buckets": [ 
    { 
     "key": "dog", 
     "doc_count": 2, 
     "secondlevel": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 1, 
     "buckets": [ 
      { 
      "key": "dog", 
      "doc_count": 2 
      }, 
      { 
      "key": "little", 
      "doc_count": 2 
      }, 
      { 
      "key": "the", 
      "doc_count": 2 
      }, 
      { 
      "key": "brown", 
      "doc_count": 1 
      } 
     ... 

2つのドキュメントで「小さな」と「犬」が共存し、2つのドキュメントで「その」と「犬」が共存し、1つのドキュメントで「犬」と「茶色」が共存することがわかります資料。もちろん、これは、が一意である場合にのみ有効です同時発生数。

あなたが本当に記述したようなトークンを必要とする場合は、そうするためのコードを書く必要があります(Elasticsearchから使用できるLuceneのカスタムトークナイザか、処理ステップは、keywordのリストであるフィールドを追加する)。

関連する問題