7.7.2.1. ExtractorHTML#

7.7.2.1.1. 概要#

Added in version 16.0.3.

注釈

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

ExtractorHTML はHTMLからテキストの内容を抽出します。デフォルトでは、HTMLタグを取り除き、文字参照( < などのHTMLエンティティ)を展開します。このエクストラクターを使うと、HTMLの中のテキストだけをマークアップなしでインデックスできます。

ExtractorHTML は、 ShortTextTextLongText などのテキスト型ではない値に対しては何もしません。この場合、値はそのまま返されます。

7.7.2.1.2. 構文#

ExtractorHTML には省略可能なパラメーターがあります。

オプションなし:

ExtractorHTML

オプション指定:

ExtractorHTML("remove_tag", true)

ExtractorHTML("expand_character_reference", true)

7.7.2.1.3. 使い方#

以下は、デフォルトのパラメーターでHTMLからテキストの内容を抽出する例です。HTMLタグ( <html><body> など)が取り除かれ、文字参照( &lt;&gt; )が展開されます。

実行例:

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

remove_tagfalse に設定すると、HTMLタグを残せます。この場合でも、文字参照は展開されます。

実行例:

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

expand_character_referencefalse に設定すると、文字参照をそのまま残せます。この場合でも、HTMLタグは取り除かれます。

実行例:

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

ExtractorHTML を語彙表に割り当てると、語彙表は抽出されたテキストの内容をインデックスします。元のHTMLはデータカラムに保持されます。

実行例:

table_create Contents TABLE_NO_KEY
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Contents html COLUMN_SCALAR Text
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Terms TABLE_PAT_KEY ShortText \
  --default_tokenizer TokenBigram \
  --normalizers NormalizerNFKC \
  --extractors ExtractorHTML
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Terms contents_html COLUMN_INDEX|WITH_POSITION Contents html
# [[0,1337566253.89858,0.000355720520019531],true]
load --table Contents
[
{"html": "<p>Groonga is a <b>fast</b> full text search engine.</p>"}
]
# [[0,1337566253.89858,0.000355720520019531],1]
select Contents \
  --match_columns html \
  --query "fast" \
  --output_columns html
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         1
#       ],
#       [
#         [
#           "html",
#           "Text"
#         ]
#       ],
#       [
#         "<p>Groonga is a <b>fast</b> full text search engine.</p>"
#       ]
#     ]
#   ]
# ]
select Contents \
  --match_columns html \
  --query "<b>" \
  --output_columns html
# [[0,1337566253.89858,0.000355720520019531],[[[0],[["html","Text"]]]]]

インデックスされたトークンは生のHTMLではなく抽出されたテキスト Groonga is a fast full text search engine. から作られるため、クエリー fast はマッチしますが、クエリー <b> はマッチしません。

7.7.2.1.4. 引数#

7.7.2.1.4.1. 省略可能引数#

7.7.2.1.4.1.1. remove_tag#

HTMLタグを取り除くかどうかを指定します。

これが true の場合、 <p> などのHTMLタグが取り除かれます。 false の場合、HTMLタグはそのまま残されます。

デフォルト値は true です。

7.7.2.1.4.1.2. expand_character_reference#

文字参照(HTMLエンティティ)を展開するかどうかを指定します。

これが true の場合、 &lt; などの名前付き文字参照と &#x3042; などの数値文字参照の両方が、対応する文字に展開されます。 false の場合、文字参照はそのまま残されます。

デフォルト値は true です。

7.7.2.1.5. 参考#