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

前
 
次
 

Solrアダプタ

このアダプタはフルテキスト索引を作成してApache Solrサーバーにロードする関数を提供します。これらの関数は、Solrのorg.apache.solr.hadoop.MapReduceIndexerToolを実行時に呼び出してHDFS上にフルテキスト索引を生成し、オプションでSolrサーバーにマージします。このアダプタから供給された複数のカスタムput関数と組込みput関数を1つの問合せ内で宣言および使用できます。たとえば、別々のSolrコレクションまたは別々の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アダプタ構成プロパティ」を参照してください。

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サーバーにロードするための組込み関数

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

import module "oxh:solr";

Solrモジュールには、次の関数が含まれています。

接頭辞solrは、デフォルトでoxh:solrネームスペースにバインドされます。

solr:put

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にロードする関数を定義できます。

シグネチャ

Solr索引を生成するカスタム関数には、次のシグネチャが必要です。

declare %solr:put [additional annotations] 
   function local:myFunctionName($value as node()) external;

注釈

%solr:put

solr put関数を宣言します。必須。

%solr:file(directory_name)

索引ファイルが書き込まれる、問合せの出力ディレクトリの下にあるサブディレクトリの名前。オプションで、デフォルト値は関数のローカル名です。

%solr-property:property_name(value)

索引生成の様々な側面をコントロールします。複数の%solr-property注釈を指定できます。

これらの注釈はorg.apache.solr.hadoop.MapReduceIndexerToolのコマンドライン・オプションに対応します。各MapReduceIndexerTool?オプションには同等のOracle XQuery for Hadoop構成プロパティおよび%solr-property注釈があります。注釈は構成プロパティよりも優先されます。サポートされている構成プロパティおよび対応する注釈の詳細は、「Solrアダプタ構成プロパティ」を参照してください。


関連項目:

MapReduceIndexerTool?コマンドライン・オプションに関する詳細は、次のサイトのCloudera Searchユーザー・ガイドを参照してください。

http://www.cloudera.com/content/cloudera-content/cloudera-docs/Search/latest/Cloudera-Search-User-Guide/csug_mapreduceindexertool.html


パラメータ

$value: Solr XML構文と一致する要素またはドキュメント・ノード。詳細は、「solr:put」を参照してください。

Solrアダプタの関数の例

例1   組込みsolr:put関数の使用

この例では、次の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アダプタ構成プロパティは、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ユーザー・ガイドを参照してください。

http://www.cloudera.com/content/cloudera-content/cloudera-docs/Search/latest/Cloudera-Search-User-Guide/csug_mapreduceindexertool.html


oracle.hadoop.xquery.solr.loader.collection

型: String

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

同等の注釈: %solr-property:collection

説明: 索引のマージのためのSolrCloudコレクション(mycollectionなど)。このプロパティをoracle.hadoop.xquery.solr.loader.go-liveおよびoracle.hadoop.xquery.solr.loader.zk-hostとともに使用します。プロパティまたは注釈のいずれかとして必須です。

oracle.hadoop.xquery.solr.loader.fair-scheduler-pool

型: String

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

同等の注釈:%solr-property:fair-scheduler-pool

説明: ジョブを発行するための適正なスケジューラ・プールの名前。デフォルトHadoopスケジューリング・メソッドではなく、適正なスケジューリングを使用してジョブが実行されます。オプション。

oracle.hadoop.xquery.solr.loader.go-live

タイプ: 文字列値trueまたはfalse

デフォルト値: false

同等の注釈: %solr-property:go-live

説明: 最終索引をライブSolrクラスタにマージできるようにするにはtrueに設定します。このプロパティをoracle.hadoop.xquery.solr.loader.collectionおよびoracle.hadoop.xquery.solr.loader.zk-hostとともに使用します。オプション。

oracle.hadoop.xquery.solr.loader.go-live-threads

型: Integer

デフォルト値: 1000

同等の注釈: %solr-property:go-live-threads

説明: 並行に実行できるライブ・マージの最大数。オプション。

oracle.hadoop.xquery.solr.loader.log4j

型: String

デフォルト値:

同等の注釈: %solr-property:log4j

説明: ローカル・ファイル・システムにあるlog4j.properties構成ファイルの相対パスまたは絶対パス。/path/to/log4j.propertiesなどです。オプション。

ファイルは、各MapReduceタスク用にアップロードされます。

oracle.hadoop.xquery.solr.loader.mappers

型: String

デフォルト値: -1

同等の注釈: %solr-property:mappers

説明: Solrが使用するマッパー・タスクの最大数。-1の値は、クラスタ上で有効なすべてのマップ・スロットの使用を可能にします。

oracle.hadoop.xquery.solr.loader.max-segments

型: String

デフォルト値: 1

同等の注釈: %solr-property:max-segments

説明: 各リデューサで生成されるセグメントの最大数。

oracle.hadoop.xquery.solr.loader.reducers

型: String

デフォルト値: -1

同等の注釈: %solr-property:reducers

説明: 使用するリデューサの数。

  • -1: クラスタにあるすべてのリデュース・スロットを使用します。

  • -2: 各Solr出力シャードに1つのリデューサを使用します。この設定は、MapReduce M-treeマージ・アルゴリズムを無効にします。これにより、通常スケーラビリティが向上します。

oracle.hadoop.xquery.solr.loader.zk-host

型: 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とともに使用します。プロパティまたは注釈のいずれかとして必須です。