Solr 3.5.0 セットアップガイド

以下の記事では、テストを目的としたLiferay 6.2 EEとSolr 3.5.0の接続方法をステップバイステップで説明しています。

Liferay Portal 6.2 EEの場合、Solr 3のサポートバージョンはバージョン3.5.0となりますのでご注意ください。

決議

以下の手順でSolr、Liferay 6.2 EEを起動し、Liferay Marketplaceで入手できる Solr 3 EEプラグイン を経由して接続します。

  1. Solr 3.5.0 をダウンロードして、便利な場所に解凍します。 解凍したSolrのルートを $solr_homeとして扱います。
  2. $solr_home/example に移動し、 java -jar start.jarを実行します。
  3. あなたの solr サーバは現在 (Jetty 上で) ポート 8983 で実行されています。 ポートを変更したい場合は、 $solr_home/example/etc/jetty.xml で変更することができます。 この記事では、ポートをデフォルト値から変更していないことを前提としています。
    1. http://localhost:8983/solr/admin にアクセスして、Solrが正しく動作しているかどうかを確認してください。
    2. Solrの管理画面が表示されているはずです。Screenshot_2014-11-27_09.00.46.png
  4. サーバーが動作していることを確認したら、Solrサーバーを停止させます。
  5. Liferay Portal 6.2 EE SP8を起動します。 バンドルのルートを $liferay-homeとして扱います。
  6. マーケットプレイスからSolr 3 EEプラグインをダウンロードし、ポータルにデプロイします。
  7. プラグインがデプロイされたら、ポータルを停止します。
  8. $liferay-home/tomcat-7.0.42/webapps/solr3-web/WEB-INF/classes/META-INF に移動し、 solr-spring.xmlというファイルを編集します。
    1. 以下のスニペットを探してください。 8080/solr" />とし、ポートを 8983に変更します。
    2. すなわち、 8983/solr" />です。
  9. $liferay-home/webapps/solr3-web/WEB-INF/conf/schema.xml$solr-home/example/solr/confにコピーします。
  10. $liferay-home/webapps/solr3-web/WEB-INF/conf/solrconfig.xml$solr-home/example/solr/confにコピーします。
  11. Solrサーバーを起動します。
  12. Liferayポータルを開始
  13. サーバー管理セクションのLiferayのコントロールパネルに移動し、完全な再インデックスを実行します。Screenshot_2014-11-27_09.48.07.png

接続が生きているかどうかをテストするには、Solrのログを確認します。 10秒ごとにLiferayがSolrサーバーにpingして、Solrのログにそのように表示されます。

Nov 27, 2014 9:34:43 AM org.apache.solr.core.SolrCore execute

INFO: [] webapp=/solr path=/admin/ping params={wt=javabin&version=2} hits=0 status=0 QTime=2

Nov 27, 2014 9:34:43 AM org.apache.solr.core.SolrCore execute

INFO: [] webapp=/solr path=/admin/ping params={wt=javabin&version=2} status=0 QTime=2

再インデックスが成功したかどうかを確認するには、Solrの管理ページに移動し、 検索をクリックします。

Solrはこれまでにインデックス化されたものをすべて表示してくれるはずです。

Screenshot_2014-11-27_09.32.23.png

共通の問題

メモリが足りない

デフォルトでは、ヒープサイズが4g、Permサイズが82mbで起動します。 何らかの理由でこれではテストシナリオに十分でない場合は、追加のパラメータを指定して割り当てられたメモリを変更することができます。

java -jar -Xmx8g -XX:MaxPermSize=128m start.jar

注意: jmap -heapを実行することで、メモリの割り当てを確認することができます。

ライフレイのログでは

10:42:41,353 WARN [liferay/search_writer/SYSTEM_ENGINE-2][ProxyMessageListener:81] com.liferay.portal.kernel.search.SearchException: Not Found__Not Found__request: http://localhost:8080/solr/update?wt=javabin&version=2 [Sanitized]
  • solr-spring.xml が正しい場所を指すように変更されていることを確認してください(上記の手順8を参照)。
  • solr-spring.xmlを変更した場合は、Liferay Portal を再起動する必要があります。

追加情報

  1. なぜ別のアプリケーションサーバーにSolrをインストールする必要があるのですか? Liferayと併用してインストールすることはできないのでしょうか?

    しかし、それはSolrを使用する目的に反しています。なぜなら、Liferayのインストール(s)のための処理を解放するために、検索インデックスを別のボックスにオフロードすることが目的だからです。

  2. SolrException.Bad Request" エラーが発生するのはなぜですか?

    ほとんどの場合、Liferay Solrプラグインの.warから $SOLR_HOME/confにSchema.xmlを追加するのを忘れている可能性が高いです。

  3. SolrException.見つかりませんでした」というエラーが出るのはなぜですか?

    Solr-Spring.xmlでSolrホームのURLを間違って設定している可能性が高いです。

  4. Luceneから移行するには?

    上記の手順を実行して、インデックスを再作成するだけです(特別な「移行」の手順はありません)。 再インデックスに関しては

  5. 再インデックス化にはどのくらいの時間がかかりますか?

    それは多くの要因に依存します:再インデックス化されるデータのサイズ、SolrサーバーのJVM設定とアプリケーション構成、そしてSolrインスタンスのデプロイメントタイプ(シングルノードかSolrCloudか)です。 デフォルトの Lucene エンジンを使用してポータル全体のインデックスを再作成するのにかかる通常の時間は、大まかな目安となります。

    リンクをクリックすると、 Solrのパフォーマンスファクターの詳細が表示されます。

  6. 演出を落とさずに再インデックスする方法はないのでしょうか?

    そうですね。 LiferayのSolrプラグインとSolrサーバーの両方が適切に設定されている限り、稼働中のLiferayサーバー上でSolrに切り替えることはシームレスなプロセスであり、本番サーバーをダウンさせる必要はありません。

  7. 再インデックス化が行われている間、私のポータルはどうなりますか?

    デフォルトの Lucene エンジンと Solr サーバーの間には、Liferay ポータルの再インデックス作成時の可用性に違いはありません。 そのため、サーバーへの負荷が最も低い時間帯にフルサーバーの再インデックスを行うようにスケジュールを組んだ方が良いでしょう。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています