Solr で sharding による分散検索(Distributed Search)

 

Solrにはレプリケーション機能やShardによる分散検索機能がある。

レプリケーション機能は、たくさんのクエリを早く検索出きるようにするもの。同じインデックスを複数のSolrインスタンスで参照し、クエリが着たら分担して検索するもの。

Shardによる分散検索機能は、大量の文書を検索出きるようにするもの。一つのインデックスではデータが大きくなりすぎるとき、複数のSolrインスタンスで異なる文書をインデックシングしておき、検索時にはこれらを一括して検索するもの。

今回は、後者を試してみる。

Shardingとは

Distributed search with Index Shardingに載ってる。

https://cwiki.apache.org/confluence/display/solr/Distributed+Search+with+Index+Sharding

 

Shardとは、一つのインデックスを担当するSorコアのこと。

分散検索では、インデクシング時には、Shard1,Shard2にそれぞれ異なる文書を登録。検索時は、これらのShardを串刺しで検索する。

インデクシング時に、異なる文書を登録するのは、管理者人手でコントロールする。検索時の、串刺し検索はサーバを指定するだけで自動で行ってくれる。

簡単な具体例

これも、同じところに書いてあるものをほとんどそのままコピー。

solrをダウンロードする。https://lucene.apache.org/solr/

現在はsolr-4.7.0.tgz

  tar xvfz solr-4.7.0.tgz
  cd solr
コアをコピーして設定を変更

 cp -rp example example7574

 perl -pi -e s/8983/7574/g example7574/etc/jetty.xml example7574/exampledocs/post.sh

別のWindowで端末を開き、Shard1用のsolrを立ち上げる。

cd example
java -server -jar start.jar
さらに別のWindowで端末を開き、Shard2用のsolrを立ち上げる
cd example7574
java -server -jar start.jar

 さらに別のWindowで端末を開き、それぞれに別々の文書を登録する。

cd example/exampledocs
./post.sh [a-m]*.xml
cd ../../example7574/exampledocs
./post.sh [n-z]*.xml
これで、インデックスは終了。
検索をしてみましょう。ipadとsolrのOR検索です。
結果が4個出てくる。

 超簡単でしたね。