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
cd example7574
java -server -jar start.jar
さらに別のWindowで端末を開き、それぞれに別々の文書を登録する。
cd example/exampledocs
./post.sh [a-m]*.xml
cd ../../example7574/exampledocs
./post.sh [n-z]*.xml
超簡単でしたね。