トークングラフ

テキストをトークンのストリームに変換する際、トークナイザーは次の情報も記録します:

  • ストリーム内の各トークンの position
  • トークンが跨る位置の数 positionLength

これらを使用して、ストリームのためのトークングラフと呼ばれる有向非巡回グラフを作成できます。トークングラフでは、各位置がノードを表します。各トークンは、次の位置を指すエッジまたはアークを表します。

トークングラフ qbf ex

同義語

一部のトークンフィルターは、既存のトークンストリームに同義語のような新しいトークンを追加できます。これらの同義語は、既存のトークンと同じ位置を跨ぐことがよくあります。

次のグラフでは、quickとその同義語fastはどちらも0の位置を持っています。彼らは同じ位置を跨いでいます。

トークングラフ qbf 同義語 ex

複数位置のトークン

一部のトークンフィルターは、複数の位置を跨ぐトークンを追加できます。これには、「atm」を「自動預け払い機」の同義語として使用するような、複数の単語の同義語のトークンが含まれることがあります。

しかし、グラフトークンフィルターとして知られる一部のトークンフィルターのみが、複数位置のトークンのpositionLengthを正確に記録します。これらのフィルターには次が含まれます:

一部のトークナイザー、例えばnori_tokenizerは、複合トークンを複数位置のトークンに正確に分解します。

次のグラフでは、domain name systemとその同義語dnsはどちらも0の位置を持っています。しかし、dnspositionLength3を持っています。グラフ内の他のトークンは、デフォルトのpositionLength1です。

トークングラフ dns 同義語 ex

検索のためのトークングラフの使用

インデクシングpositionLength属性を無視し、複数位置のトークンを含むトークングラフをサポートしません。

しかし、matchmatch_phraseのようなクエリは、これらのグラフを使用して単一のクエリ文字列から複数のサブクエリを生成できます。

ユーザーが[match_phrase]クエリを使用して次のフレーズを検索します:

domain name system is fragile

検索分析中に、dnsdomain name systemの同義語がクエリ文字列のトークンストリームに追加されます。dnsトークンはpositionLength3を持っています。

トークングラフ dns 同義語 ex

  1. #### テキスト
  2. ``````text
  3. dns is fragile
  4. domain name system is fragile
  5. `

これは、クエリがdns is fragile または domain name system is fragileを含むドキュメントに一致することを意味します。

無効なトークングラフ

次のトークンフィルターは、複数の位置を跨ぐトークンを追加できますが、デフォルトのpositionLength1としてのみ記録します:

これは、これらのフィルターがそのようなトークンを含むストリームに対して無効なトークングラフを生成することを意味します。

次のグラフでは、dnsdomain name systemの複数位置の同義語です。しかし、dnsはデフォルトのpositionLength1を持っており、無効なグラフが生成されます。

トークングラフ dns 無効 ex

無効なトークングラフを検索に使用しないでください。無効なグラフは予期しない検索結果を引き起こす可能性があります。