このアダプタはフルテキスト索引を作成してApache Solrサーバーにロードする関数を提供します。これらの関数は、Solrのorg.apache.solr.hadoop.MapReduceIndexerTool
を実行時に呼び出してHDFS上にフルテキスト索引を生成し、オプションでSolrサーバーにマージします。このアダプタから供給された複数のカスタムput関数と組込みput関数を1つの問合せ内で宣言および使用できます。たとえば、別々のSolrコレクションまたは別々のSolrクラスタにデータをロードできます。
次のトピックでは、このアダプタについて説明します。
Solrアダプタを初めて使用するときには、「Oracle XQuery for Hadoopのインストール」に説明されているとおりHadoopクラスタにSolrがインストールされ構成されていることを確認してください。
Oracle XQuery for Hadoop問合せは次の構成プロパティまたは同等の注釈を使用する必要があります。
oracle.hadoop.xquery.solr.loader.zk-host
oracle.hadoop.xquery.solr.loader.collection
索引がSolrサーバーのライブ・セットにロードされている場合も、この構成プロパティまたは同等の注釈が必要です。
oracle.hadoop.xquery.solr.loader.go-live
構成プロパティは、問合せの実行時にhadoop
コマンドで-D
オプションまたは-conf
オプションを使用すると設定できます。「問合せの実行」および「Solrアダプタ構成プロパティ」を参照してください。
この例では、OXH_SOLR_MR_HOME
を設定し、問合せでhadoop -D
オプションを使用して構成プロパティを設定します。
$ export OXH_SOLR_MR_HOME=/usr/lib/solr/contrib/mr $ hadoop jar $OXH_HOME/lib/oxh.jar -D oracle.hadoop.xquery.solr.loader.zk-host=/solr -D oracle.hadoop.xquery.solr.loader.collection=collection1 -D oracle.hadoop.xquery.solr.loader.go-live=true ./myquery.xq -output ./myoutput
問合せで組込み関数を使用するには、次のようにSolrモジュールをインポートする必要があります。
import module "oxh:solr";
Solrモジュールには、次の関数が含まれています。
接頭辞solr
は、デフォルトでoxh:solr
ネームスペースにバインドされます。
Solr索引に単一のドキュメントを書き込みます。
このドキュメントXML形式は、次のサイトでSolrによって指定されます。
https://wiki.apache.org/solr/UpdateXmlMessages
シグネチャ
declare %solr:put function solr:put($value as element(doc)) external;
パラメータ
$value
: doc
と呼ばれる単一のXML要素。この要素には、ここで示すように1つ以上のfield
要素が含まれます。
<doc> <field name="field_name_1">field_value_1</field> . . . <field name="field_name_N">field_value_N</field> </doc>
戻り値
output_dir
/solr-put
ディレクトリに書き込まれた生成済索引。output_dirは問合せの出力ディレクトリです
次の注釈を使用して、フルテキスト索引を生成し、Solrにロードする関数を定義できます。
シグネチャ
Solr索引を生成するカスタム関数には、次のシグネチャが必要です。
declare %solr:put [additional annotations] function local:myFunctionName($value as node()) external;
注釈
solr put関数を宣言します。必須。
索引ファイルが書き込まれる、問合せの出力ディレクトリの下にあるサブディレクトリの名前。オプションで、デフォルト値は関数のローカル名です。
索引生成の様々な側面をコントロールします。複数の%solr-property
注釈を指定できます。
これらの注釈はorg.apache.solr.hadoop.MapReduceIndexerTool
のコマンドライン・オプションに対応します。各MapReduceIndexerTool?
オプションには同等のOracle XQuery for Hadoop構成プロパティおよび%solr-property
注釈があります。注釈は構成プロパティよりも優先されます。サポートされている構成プロパティおよび対応する注釈の詳細は、「Solrアダプタ構成プロパティ」を参照してください。
関連項目: MapReduceIndexerTool? コマンドライン・オプションに関する詳細は、次のサイトのCloudera Searchユーザー・ガイドを参照してください。
|
この例では、次のHDFSテキスト・ファイルを使用します。このファイルには、ユーザーID、姓名、年齢などのユーザー・プロファイル情報がコロン(:)区切りで格納されています。
mydata/users.txt john:John Doe:45 kelly:Kelly Johnson:32 laura:Laura Smith: phil:Phil Johnson:27
最初の問合せは、名前で検索可能なフルテキスト索引を作成します。
import module "oxh:text"; import module "oxh:solr"; for $line in text:collection("mydata/users.txt") let $split := fn:tokenize($line, ":") let $id := $split[1] let $name := $split[2] return solr:put( <doc> <field name="id">{ $id }</field> <field name="name">{ $name }</field> </doc> )
2番目の問合せは同じ結果となりますが、カスタムput関数を使用します。また、関数の注釈を使用することですべての構成パラメータを定義します。そのため、この問合せを実行するときに構成パラメータを設定する必要はありません。
import module "oxh:text"; declare %solr:put %solr-property:go-live %solr-property:zk-host("/solr") %solr-property:collection("collection1") function local:my-solr-put($doc as element(doc)) external; for $line in text:collection("mydata/users.txt") let $split := fn:tokenize($line, ":") let $id := $split[1] let $name := $split[2] return local:my-solr-put( <doc> <field name="id">{ $id }</field> <field name="name">{ $name }</field> </doc> )
Solrアダプタ構成プロパティは、Solr MapReduceIndexerTool
オプションに対応します。
MapReduceIndexerTool
は、入力ファイルからSolr索引のシャードを作成し、索引をHDFSに書き込むMapReduceバッチ・ジョブ・ドライバです。また出力シャードのライブSolrサーバー(通常、SolrCloud)へのマージもサポートします。
これらのプロパティは、汎用の-conf
および-D
hadoop
コマンドライン・オプションを使用してOracle XQuery for Hadoopに指定できます。この方法を使用して指定されるプロパティは、問合せ内のすべてのSolrアダプタput関数に適用されます。hadoopコマンドライン・オプションの詳細は、「問合せの実行」と特に「汎用オプション」
を参照してください。
あるいは、%solr-property
接頭辞を使用して、これらのプロパティをSolrアダプタのput関数の注釈として指定できます。これらの注釈はプロパティの説明で特定されます。注釈は、宣言にその注釈があるSolrアダプタの特定のput関数にのみ適用されます。
関連項目: SolrによるMapReduceIndexerTool オプションの使用方法に関する説明は、次のサイトのCloudera Searchユーザー・ガイドを参照してください。
|
型: String
デフォルト値: 定義されていません。
同等の注釈: %solr-property:collection
説明: 索引のマージのためのSolrCloudコレクション(mycollection
など)。このプロパティをoracle.hadoop.xquery.solr.loader.go-live
およびoracle.hadoop.xquery.solr.loader.zk-host
とともに使用します。プロパティまたは注釈のいずれかとして必須です。
型: String
デフォルト値: 定義されていません。
同等の注釈:%solr-property:fair-scheduler-pool
説明: ジョブを発行するための適正なスケジューラ・プールの名前。デフォルトHadoopスケジューリング・メソッドではなく、適正なスケジューリングを使用してジョブが実行されます。オプション。
タイプ: 文字列値true
またはfalse
デフォルト値: false
同等の注釈: %solr-property:go-live
説明: 最終索引をライブSolrクラスタにマージできるようにするにはtrue
に設定します。このプロパティをoracle.hadoop.xquery.solr.loader.collection
およびoracle.hadoop.xquery.solr.loader.zk-host
とともに使用します。オプション。
型: Integer
デフォルト値: 1000
同等の注釈: %solr-property:go-live-threads
説明: 並行に実行できるライブ・マージの最大数。オプション。
型: String
デフォルト値:
同等の注釈: %solr-property:log4j
説明: ローカル・ファイル・システムにあるlog4j.properties
構成ファイルの相対パスまたは絶対パス。/path/to/log4j.properties
などです。オプション。
ファイルは、各MapReduceタスク用にアップロードされます。
型: String
デフォルト値: -1
同等の注釈: %solr-property:mappers
説明: Solrが使用するマッパー・タスクの最大数。-1
の値は、クラスタ上で有効なすべてのマップ・スロットの使用を可能にします。
型: String
デフォルト値: 1
同等の注釈: %solr-property:max-segments
説明: 各リデューサで生成されるセグメントの最大数。
型: String
デフォルト値: -1
同等の注釈: %solr-property:reducers
説明: 使用するリデューサの数。
-1
: クラスタにあるすべてのリデュース・スロットを使用します。
-2
: 各Solr出力シャードに1つのリデューサを使用します。この設定は、MapReduce M-treeマージ・アルゴリズムを無効にします。これにより、通常スケーラビリティが向上します。
型: String
デフォルト値: 定義されていません。
同等の注釈: %solr-property:zk-host
説明: SolrCloudクラスタによって使用されるZooKeeperアンサンブルのアドレス。それぞれがZooKeeperサーバーに対応する、カンマ区切りのhost:portペアのリストとしてアドレスを指定します。たとえば、127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/solr
のように指定します。オプション。
アドレスがスラッシュ(/)で始まる場合(/solr
など)、Oracle XQuery for Hadoopは自動的にZooKeeper接続文字列からアドレスに接頭辞を付けます。
このプロパティによってSolrは作成する出力シャードの数および出力シャードをマージするSolr URLの数を決定します。このプロパティをoracle.hadoop.xquery.solr.loader.collection
およびoracle.hadoop.xquery.solr.loader.go-live
とともに使用します。プロパティまたは注釈のいずれかとして必須です。