legacy-knowledge-base
公開されました Jul. 2, 2025

Liferay Portal 6.2におけるSolr 4のインストールと設定について

投稿者

Dániel Jávorszky

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

以下の記事では、テストを目的としてLiferay Portal 6.2 EEとSolr 4.3.1を接続する際の手順を紹介しています。 なお、Liferay Portal 6.2 EEでは、Solr 4の対応バージョンはバージョン4.3.1~4.10.2となっています。

解像度

以下の手順に従って、Liferay Portal 6.2 EEとともにSolrを起動し、Liferay Marketplaceで利用可能なLiferay Solr 4 Search Engineアプリを介して接続します。

  1. Solr 4.3.1 をダウンロードし、都合の良い場所に解凍してください。 解凍したSolrのルートを SOLR_HOMEとして扱う。
  2. SOLR_HOME/example に移動して実行 java -jar start.jar
  3. あなたのsolrサーバーは、ポート 8983で(Jettyで)実行されています。 その場合は、 SOLR_HOME/example/etc/jetty.xmlでポートを変更することができます。 本記事では、 ポートを初期値から変更していないことを前提としています。
  4. http://localhost:8983/solr に移動して、Solrが正しく動作しているかどうかを検証します。
  5. サーバーが起動していることを確認したら、Solrサーバーを停止します。
  6. Liferay Portal 6.2 EE を起動します。 バンドルのルートを $liferay-homeとして扱う。
  7. Liferay Solr 4 Search Engine app をマーケットプレイスからダウンロードし、ポータルにデプロイします。
  8. プラグインの導入が完了したら、ポータルを停止します。
  9. $liferay-home/webapps/solr4-web/WEB-INF/conf/schema.xml$solr-home/example/solr/collection1/confへコピーします。
  10. $liferay-home/webapps/solr4-web/WEB-INF/conf/solrconfig.xml$solr-home/example/solr/collection1/confへコピーします。
  11. Liferay Solr 4 Search Engine 2.1.0 以降をご利用の場合:
    1. TOMCAT_HOME/webapps/solr4-web/WEB-INF/solr-ext.properties 以下の内容で作成します。 server.http.url=http://localhost:8983/solr
    2. 保存
  12. 古いバージョンのLiferay Solr 4 Search Engineプラグインを使用している場合:
    1. LIFERAY_HOME/tomcat-7.0.62/webapps/solr4-web/WEB-INF/META-INF に移動して、 solr-spring.xmlというファイルを編集します。 次のスニペット 8080/solr" /> を探し、 8983/solr" />に置き換えてください。
    2. 保存
  13. Solrサーバーを起動する
  14. Liferay Portalの起動
  15. Liferay Portal Control Panel > Server Administration に移動し、完全な再インデックス、検索インデックスの再インデックスを実行します。

Screenshot_2014-11-27_09.51.54_-_111111.png

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

395631 [qtp227416342-15] INFO org.apache.solr.core.SolrCore – [collection1] webapp=/solr path=/admin/ping params={wt=javabin&version=2} hits=0 status=0 QTime=1

395631 [qtp227416342-15] INFO org.apache.solr.core.SolrCore – [collection1] webapp=/solr path=/admin/ping params={wt=javabin&version=2} status=0 QTime=1

再インデックスに成功したかどうかを確認するには、Solrの管理ページに移動し、ドロップダウンメニューから Collection1 を選択します。 クエリをクリックし、 クエリの実行をクリックします。 Solrは、これまでにインデックスしたものをすべて表示するはずです:

Screenshot_2014-11-27_08.51.17_-_22222.png

共通の課題

メモリが足りない

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

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

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

未定義フィールド _

Solrのログで:

ERROR org.apache.solr.core.SolrCore – org.apache.solr.common.SolrException: undefined field companyId

Liferayのログで:

WARN [liferay/search_writer/SYSTEM_ENGINE-1][ProxyMessageListener:81] com.liferay.portal.kernel.search.SearchException: undefined field companyId
  • Solr EEプラグインからSolrサーバーに schema.xml をコピーしたことを確認してください(上記ステップ9参照)。
  • schema.xml が更新された場合、Solrサーバーを再起動する必要があります。

LiferayがSolrサーバーに到達できない。

Liferayのログで:

WARN [liferay/search_writer/SYSTEM_ENGINE-2][ProxyMessageListener:81] com.liferay.portal.kernel.search.SearchException: Server at http://localhost:8080/solr returned non ok status:503, message:Service Unavailable
  • solr-spring.xml が正しい場所を指すように修正されていることを確認してください(上記ステップ8参照)。
  • solr-spring.xmlを変更した場合、Liferay Portal を再起動する必要があります。

追加情報

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

    もちろん可能ですが、それではSolrを使う意味がありません。目的は、検索インデックスを別のボックスにオフロードすることで、Liferayのインストールに必要な処理を解放することだからです。

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

    Liferay Solr plugin .war の Schema.xml を $SOLR_HOME/conf に追加することを忘れている可能性が高いです。

  3. なぜ、「SolrException:Not Found」エラーが発生するのですが?

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

  4. Luceneからの移行はどのようにすればよいですか?

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

  5. インデックスの再作成にはどれくらいの時間がかかるのでしょうか?

    再インデックス化するデータのサイズ、SolrサーバーのJVM設定やアプリケーションの構成、Solrインスタンスの展開タイプ(シングルノードまたはSolrCloud)など、多くの要因に依存します。 デフォルトのLuceneエンジンを使用して、ポータル全体のインデックスを再作成するのにかかる通常の時間は、大まかな推定を提供することができます。
    Solrのパフォーマンスについては、こちら(https://wiki.apache.org/solr/SolrPerformanceFactors)をご参照ください。

  6. 本番を落とさずにインデックスを張り直す方法はあるのでしょうか?

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

  7. 再インデックス化の間、私のポータルはどうなりますか?

    再インデックス作成中のLiferayポータルの可用性については、デフォルトのLuceneエンジンとSolrサーバーに違いはありません:プロセスが終了するまで、検索結果はゼロか不正確なカウントになることがあります。 そのため、サーバーの負荷が最も低くなる時間帯に、サーバー全体の再インデックスを予定しておくとよいでしょう。

did-this-article-resolve-your-issue

legacy-knowledge-base