2016-05-11 6 views
8

対私はインデックスを作成しながら、私はESのedge_n_gramsを使用して複数の単語(フレーズ)の提案を構築しようとしている...私はそれを行う方法を理解していることを考えElasticsearchを使用してオートコンプリートを実装するトークナイザは、トークンフィルタ

をしようとしていますクロールされたデータ

tokenizertoken_filterの違いは何ですか - 私は、これらのドキュメントを読んで、まだそれらのより多くの理解を必要としてきました....例えば

は、ESは、ユーザーに対して検索するために使用するものであるtoken_filter入力? ESがトークンを作るために使うのはトークナイザですか?トークンとは何ですか?

これらのいずれかを使用して複数単語の候補を作成することはできますか?

答えて

31

トークナイザは入力全体をトークンに分割し、トークンフィルタは各トークンに何らかの変換を適用します。

例えば、入力がThe quick brown foxであるとします。

  • T
  • Th
  • The
  • The(最後の文字はスペースです)
  • The q
  • :あなたはトークナイザedgeNGram を使用する場合は、次のトークンを取得しますThe qu
  • The qui
  • The quic
  • The quick
  • The quick(最後の文字はスペースです)
  • The quick b
  • The quick br
  • The quick bro
  • The quick brow
  • その後、0
  • The quick brown(最後の文字はスペースです)
  • The quick brown f
  • The quick brown fo
  • The quick brown fox

あなたが標準トークナイザを使用する場合は、ワード/トークンに入力を分割あろうと、 トークンフィルタ、あなたは次のトークンを手に入れます

  • TThThe
  • qququiquicquick
  • bbrbrobrowbrown
  • ffofox

あなたが見ることができるように 、チョーシーedgeNgram トークナイザまたはトークンフィルタは、テキストをどのようにスライスしてサイコロをしたいのか、どのように検索したいのかによって異なります。

優れたelyzerツールを使用すると、分析プロセスを視覚化し、各ステップ(トークンフィルタリングとトークンフィルタリング)で何が生成されているかを確認することができます。

ES 2.2の時点で、_analyzeエンドポイントは、分析プロセスの各ステップでの詳細を示すもサポートしています。

+0

多くのありがとうとわかりやすく説明しました – user3125823

+0

私はES 1.7を使用していますが、この回答が示唆しているものとは異なる出力を生成します。 't、th、the、q、qu、qui、... 'のトークン化とトークン自体は同じですが、オフセットと位置は異なります。フィルタ: '{" token ":" qui "、" start_offset ":4、" end_offset ":9、" position ":2}' Tokenizer: '{" token ":" qui "、" start_offset ":4、" end_offset ":7、" position ":6}' –

関連する問題