掲示板

Liferay 6.2 + Solr4.3.1 + Solr4 プラグインの組み合わせ

thumbnail
8年前 に Yasuyuki Takeo によって更新されました。

Liferay 6.2 + Solr4.3.1 + Solr4 プラグインの組み合わせ

Junior Member 投稿: 30 参加年月日: 12/09/13 最新の投稿
Liferay6.2はデフォルトで検索エンジンとしてLucene3.5を使用しています。トークナイザーにCJKAnalyzerを使用しているのですが、日本語分解の精度があまり高くありません。また外部から設定を変更するのが難しい(extプラグインが必要になります)のと、細かいチューニングが難しいため、Solrの使用をお勧めします。

Liferay6.2ではSolr4プラグインが提供されており、これを使用すれば簡単にSolrとLiferayを統合することができます。

Liferay6.2が正式にサポートしているSolrバージョンは4.3.1となっています。

1. Liferay6.2サーバーを立ち上げる
2. コントロールパネルのStoreからsolr4プラグインをMarketplaceからインストール
3. 別途でインストールしたSolr4.3.1を設定する
solr-4.3.1/example/solr/collection1/conf以下に

solr4-web/WEB-INF/conf/solrconfig.xml
solr4-web/WEB-INF/conf/schema.xml


をコピー。

4. solr4-web/WEB-INF/classes/META-INF/solr-spring.xmlの
	<bean id="com.liferay.portal.search.solr.server.BasicAuthSolrServer" class="com.liferay.portal.search.solr.server.BasicAuthSolrServer">
		<property name="defaultMaxConnectionsPerRoute" value="20" />
		<property name="httpRequestInterceptors">
			<list>
				<bean class="com.liferay.portal.search.solr.interceptor.PreemptiveAuthInterceptor" />
			</list>
		</property>
		<property name="maxTotalConnections" value="20" />
		<property name="url" value="http://localhost:8983/solr" />
	</bean>

赤字のところを、自分の環境のSolrサーバーを指すように書き換えます。SolrサーバーとLiferayが同一のサーバーで動作させる場合は、http://localhost:8983/solrで立ち上がります。

5. Liferayを一旦停止する
6. Solrを起動
/solr-4.3.1/example$ java -jar start.jar


7. Liferayを再起動
8. https://github.com/yasuflatland-lf/LocalizedIndexerPostProcessor-hookからマルチバイト検索機能向上用のhookをダウンロード、Liferayサーバーと同等のSDKを用いてコンパイル、Liferayサーバーにデプロイする。
9. デプロイ完了後、コントロールパネル -> サーバー管理->検索で利用するインデックスを再構築する。とスペルチェック用インデックスを再構築する。を実行

これで検索準備が整います。

Solr4プラグインに含まれるschema.xmlをご覧になるとわかるように、デフォルトではKuromojiを形態素解析エンジンに使用した、JapaneseTokenizerFactoryが使用されています。またN-Gram用のNGramTokenizerFactoryも使用できるので、bi-gramなどでのインデックスも行うこともできます。使用できるTokenizerの詳細はSolr4.3.1のマニュアルを参照ください。