7.7.2.1. ExtractorHTML#
7.7.2.1.1. 概要#
Added in version 16.0.3.
注釈
これは実験的な機能です。現時点ではまだ安定しきっていません。
ExtractorHTML はHTMLからテキストの内容を抽出します。デフォルトでは、HTMLタグを取り除き、文字参照( < などのHTMLエンティティ)を展開します。このエクストラクターを使うと、HTMLの中のテキストだけをマークアップなしでインデックスできます。
ExtractorHTML は、 ShortText 、 Text 、 LongText などのテキスト型ではない値に対しては何もしません。この場合、値はそのまま返されます。
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> など)が取り除かれ、文字参照( < と > )が展開されます。
実行例:
extract \
--extractors ExtractorHTML \
--value "<html><body>He<ll>o</body></html>"
# [[0,1337566253.89858,0.000355720520019531],{"extracted":"He<ll>o"}]
remove_tag を false に設定すると、HTMLタグを残せます。この場合でも、文字参照は展開されます。
実行例:
extract \
--extractors 'ExtractorHTML("remove_tag", false)' \
--value "<html><body>He<ll>o</body></html>"
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# {
# "extracted": "<html><body>He<ll>o</body></html>"
# }
# ]
expand_character_reference を false に設定すると、文字参照をそのまま残せます。この場合でも、HTMLタグは取り除かれます。
実行例:
extract \
--extractors 'ExtractorHTML("expand_character_reference", false)' \
--value "<html><body>He<ll>o</body></html>"
# [[0,1337566253.89858,0.000355720520019531],{"extracted":"He<ll>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 の場合、 < などの名前付き文字参照と あ などの数値文字参照の両方が、対応する文字に展開されます。 false の場合、文字参照はそのまま残されます。
デフォルト値は true です。