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

# 7.3.25. `extract`

## 7.3.25.1. 概要

Added in version 16.0.3.

注釈

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

`extract` コマンドは、指定したエクストラクターを使って、HTMLやJSONなどの構造化されたデータからプレーンテキストや値を抽出します。

`extract` コマンドを使うのにテーブルを作る必要はありません。 table_create の extractors オプションでエクストラクターを語彙表に割り当てる前に、エクストラクターの結果を確認するのに便利です。

エクストラクターの詳細については エクストラクター を参照してください。

## 7.3.25.2. 構文

このコマンドは2つの引数を受け取ります。

`extractors` と `value` はどちらも必須です。

    extract extractors
            value

## 7.3.25.3. 使い方

以下は、 ExtractorHTML を使ってHTMLからテキストの内容を抽出する例です。HTMLタグを取り除き、文字参照を展開します。

実行例：

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

以下は、 ExtractorJSON を使ってJSONから値を抽出する例です。 `$.tags[*]` というJSONPathは `tags` 配列のすべての要素にマッチします。

実行例：

    extract \
      --extractors 'ExtractorJSON("path", "$.tags[*]")' \
      --value '{"tags": ["groonga", "search", "engine"], "title": "ignored"}'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "extracted": [
    #       "groonga",
    #       "search",
    #       "engine"
    #     ]
    #   }
    # ]

## 7.3.25.4. 引数

このセクションでは `extract` の引数について説明します。

### 7.3.25.4.1. 必須引数

必須引数として `extractors` と `value` があります。

#### 7.3.25.4.1.1. `extractors`

`,` で区切ってエクストラクターを指定します。 `extract` コマンドは、エクストラクターを `value` に順番に適用します。あるエクストラクターの出力は、次のエクストラクターの入力として渡されます。

すべてのエクストラクターについては エクストラクター を参照してください。

#### 7.3.25.4.1.2. `value`

プレーンテキストや値を抽出したい対象の値を指定します。

`value` に空白を含めたい場合は、シングルクォート（ `'` ）またはダブルクォート（ `"` ）で `value` を囲む必要があります。

## 7.3.25.5. 戻り値

    [HEADER, {"extracted": EXTRACTED_VALUE}]

`HEADER`

  `HEADER` については 出力形式 を参照してください。

`EXTRACTED_VALUE`

  指定したエクストラクターによって抽出された値です。 ExtractorHTML のようにエクストラクターが単一の値を返す場合は単一の値になります。 ExtractorJSON のようにエクストラクターが複数の値を返す場合は配列になります。

## 7.3.25.6. 参考

- エクストラクター

- table_create

- 出力形式