ヘッダーをスキップ
Oracle® Big Data Connectorsユーザーズ・ガイド
リリース4 (4.1)
E60568-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

Tikaファイル・アダプタ

このアダプタは、Apache Tikaライブラリを使用して様々な形式でHDFSに格納されているファイルを解析するための関数を提供します。この項の内容は次のとおりです。

Tikaを使用してファイルを解析するための組込みライブラリ関数

問合せで組込み関数を使用するには、次のようにTikaファイル・モジュールをインポートする必要があります。

import module "oxh:tika";

Tikaファイル・モジュールには、次の関数が含まれています。

例は、「Tikaファイル・アダプタの関数の例」を参照してください。

tika:collection

様々な形式でHDFSに格納されているファイルを解析し、それらのファイルからコンテンツまたはメタデータを抽出します。

シグネチャ

declare %tika:collection function
   tika:collection($uris as xs:string*) as document-node()* external;

declare %tika:collection function
   function tika:collection($uris as xs:string*, $contentType as xs:string?) as document-node()* external;

パラメータ

$uris: HDFSファイルのURI。

$contentType: 解析するコンテンツのメディア・タイプを指定するもので、charset属性を含めることができます。パラメータを指定する場合、タイプとエンコーディングの両方を定義します。指定しない場合、Tikaはファイル拡張子から値の自動検出を試行します。パラメータを指定することをお薦めします。

戻り値

各値に対して1つのドキュメント・ノードが返されます。「Tikaパーサーの出力形式」を参照してください。

tika:parse

引数として提供されたデータを解析します。たとえば、XMLまたはJSONドキュメント内のhtmlフラグメントを解析できます。

シグネチャ

declare function
   tika:parse($data as xs:string?, $contentType as xs:string?) as document-node()* external;

パラメータ

$data: 解析する値。

$contentType: 解析するコンテンツのメディア・タイプを指定するもので、charset属性を含めることができます。パラメータを指定する場合、タイプとエンコーディングの両方を定義します。指定しない場合、Tikaはファイル拡張子から値の自動検出を試行します。パラメータを指定することをお薦めします。

戻り値

各値に対して1つのドキュメント・ノードが返されます。「Tikaパーサーの出力形式」を参照してください。

Tikaを使用してファイルを解析するためのカスタム関数

次の注釈を使用すると、Tikaを使用してHDFS内のファイルを解析する関数を定義できます。これらの注釈によって、組込み関数では使用できない追加機能を使用できます。

シグネチャ

HDFSファイルを読み取るカスタム関数には、次のいずれかのシグネチャが必要です。

declare %tika:collection [additional annotations]
   function local:myFunctionName($uris as xs:string*, $contentType as xs:string?) as document-node()* external;
declare %tika:collection [additional annotations]
   function local:myFunctionName($uris as xs:string*) as document-node()* external;

注釈

%tika:collection(["method"])

Tikaファイル・アダプタにより実装される外部関数を識別します。必須。

オプションのmethodパラメータは次のいずれかの値です。

  • tika: tikaファイル内の各行がdocument-node()として返されます。デフォルト。

%output:media-type

ファイル・コンテンツ・タイプを宣言します。これはMIMEタイプであり、XQuery仕様に従ってcharset属性を持つことができません。オプション。

%output:encoding

ファイル文字セットを宣言します。オプション。


注意:

%output:media-type注釈と%output:econding注釈は、シグネチャ内に$contentTypeが明示的に指定されていないときのコンテンツ・タイプまたはエンコーディングを指定します。

パラメータ

$uris as xs:string*

HDFSファイルのURIをリストします。必須。

$contentType as xs:string?

ファイル・コンテンツ・タイプ。charset属性を持つことができます。

戻り値

document-node()*および2つのルート要素。「Tikaパーサーの出力形式」を参照してください。

Tikaパーサーの出力形式

Tika解析の結果は、1つのドキュメント・ノードと2つのルート要素です。

  • ルート要素#1は、Tikaにより生成されたXHTMLコンテンツです。

  • ルート要素#2は、Tikaにより抽出されたドキュメント・メタデータです。

ルート要素の形式は次のようになります。

ルート要素#1

<html xmlns="http://www.w3.org/1999/xhtml">
...textual content of Tika HTML...
</html>

ルート要素#2

<tika:metadata xmlns:tika="oxh:tika">
   <tika:property name="Name_1">VALUE_1</tika:property>
   <tika:property name="NAME_2">VALUE_2</tika:property>
</tika:metadata>

Tikaアダプタの構成プロパティ

次のHadoopプロパティは、Tikaアダプタの動作を制御します。

oracle.hadoop.xquery.tika.html.asis

型: ブール

デフォルト値: false。

説明: これをTRUEに設定すると、解析中にすべてのHTML要素が省略されます。これをFALSEに設定すると、解析中に安全な要素が省略されます。

oracle.hadoop.xquery.tika.locale

型: 文字列のカンマ区切りのリスト

デフォルト値: 定義されていません。

説明: Microsoft Officeドキュメント・パーサーなどの一部のTikaパーサーにより使用されるロケールを定義します。使用できる文字列は、language、countryおよびvariantの3つのみです。文字列countryおよびvariantはオプションです。ロケールを定義しない場合、システム・ロケールが使用されます。文字列を定義する場合、その文字列はhttp://docs.oracle.com/javase/7/docs/api/java/util/Locale.htmlに記載されているjava.util.Locale仕様形式に対応している必要があり、ロケールは次のように構成できます。

  • languageのみを指定した場合、ロケールは言語から構成されます。

  • languageおよびcountryを指定した場合、ロケールは言語と国の両方から構成されます。

  • language、countryおよびvariantを指定した場合、ロケールは言語、国およびバリアントから構成されます。

Tikaファイル・アダプタの関数の例

例1 組込み関数を使用したCloudera SearchによるPDFドキュメントの索引付け

この問合せ例では、Tikaを使用してPDFファイルをHTMLフォームに解析し、HTMLドキュメントをSolrのフルテキスト索引に追加します。

*bigdata*.pdf
 

次の問合せでは、HDFSファイルを索引付けします。

import module "oxh:tika";
import module "oxh:solr";
 
for $doc in tika:collection("*bigdata*.pdf")
let $docid := data($doc//*:meta[@name eq "resourceName"]/@content)[1]
let $body := $doc//*:body[1]
return
   solr:put(
        <doc> 
            <field name="id">{ $docid }</field>
            <field name="text">{ string($body) }</field>
            <field name="content">{ serialize($doc/*:html) }</field>
         </doc> 
   )
 

ドキュメントのHTML表現がSolr索引に追加され、検索可能になります。索引内の各ドキュメントIDはファイル名です。

例2 組込み関数を使用したCloudera SearchによるHTMLドキュメントの索引付け

この問合せ例では、順序ファイルおよびTikaを使用して解析を行います(キーがURLで値がhtmlです)。

import module "oxh:tika";
import module "oxh:solr";
import module "oxh:seq";

for $doc in seq:collection-tika(”/path/to/seq/files/*")
let $docid := document-uri($doc)
let $body := $doc//*:body[1]
return
   solr:put(
      <doc>
         <field name="id">{ $docid }</field>
         <field name="text">{ string($body) }</field>
         <field name="content">{ serialize($doc/*:html) }</field>
      </doc>
   )

ドキュメントのHTML表現がSolr索引に追加され、検索可能になります。索引内の各ドキュメントIDはファイル名です。