本文へスキップ
`Ctrl`+`K`

# 7.7. エクストラクター

## 7.7.1. 概要

Added in version 16.0.3.

注釈

これは実験的な機能です。現時点ではまだ安定しきっていません。

Groongaには、HTMLやJSONなどの構造化されたデータからプレーンテキストや値を抽出するエクストラクターモジュールがあります。これは、値をトークナイズしてインデックスを更新する前に使われます。例えば、 ExtractorHTML はタグを取り除くことでHTMLからテキストの内容だけを抽出するので、 `<p>` などのマークアップはトークンとしてインデックスされません。

エクストラクターモジュールはプラグインとして追加できます。自作のエクストラクタープラグインをGroongaに登録することで、値の抽出をカスタマイズできます。

エクストラクターモジュールはテーブルに割り当てます。このテーブルは通常、インデックス用の語彙表です。1つのテーブルには0個以上のエクストラクターモジュールを割り当てられます。 table_create の extractors オプションで、エクストラクターモジュールをテーブルに割り当てられます。

以下は、 ExtractorHTML エクストラクターモジュールを使う `table_create` の例です。

実行例：

    table_create Terms TABLE_PAT_KEY ShortText --extractors ExtractorHTML
    # [[0,1337566253.89858,0.000355720520019531],true]

エクストラクターを語彙表に設定すると、その語彙表のインデックスが更新されるときに自動的に適用されます。元の値の代わりに、抽出された値がトークナイズされてインデックスされます。元の値はそのままデータカラムに格納されます。そのため、元の構造化されたデータを保持したまま、抽出された内容を対象に検索できます。

テーブルに複数のエクストラクターがある場合は、順番に適用されます。あるエクストラクターの出力は、次のエクストラクターの入力として渡されます。これはエクストラクターを組み合わせる必要があるときに便利です。例えば、 ExtractorJSON でJSONから文字列を抽出し、その文字列の中のHTMLタグを ExtractorHTML で取り除けます。

extract コマンドを使うと、エクストラクターが値をどのように処理するかを確認できます。 extract コマンドは、指定したエクストラクターを与えられた値に適用し、抽出された値を返します。テーブルは必要ありません。

実行例：

    extract \
      --extractors 'ExtractorHTML' \
      --value "<html><body>He&lt;ll&gt;o</body></html>"
    # [[0,1337566253.89858,0.000355720520019531],{"extracted":"He<ll>o"}]

`extract` コマンドは、エクストラクターを語彙表に割り当てる前に、その結果を確認するのに便利です。

## 7.7.2. 組み込みのエクストラクター

以下は組み込みのエクストラクターの一覧です。

- 7.7.2.1. `ExtractorHTML`
- 7.7.2.2. `ExtractorJSON`

## 7.7.3. 参考

- extract

- table_create