Liferay Supportは、特定のサードパーティ製品を他の製品よりも推奨または承認するものではありません。 Liferayは、これらの製品に関して、ここに記載または参照されているいかなる指示に対しても責任を負いません。 これらの原則の実行は、加入者の責任において行われるものとします。
2ノードクラスタにSolrをセットアップし、Liferayのインデックス作成方法をSolrに切り替えるための入門ガイドです。
Solrは、Lucene Java検索ライブラリをベースにしたオープンソースのエンタープライズ検索サーバーで、XML/HTTPとJSON API、ヒットハイライト、ファセット検索、キャッシング、レプリケーション、Web管理インターフェイスを備えています。 Solrは、管理者がカスタムコードを書くことなく、構造化データを検索することができます。
メリット
- 全体として、SOLRはインデックスのクラスタリングに最も適した性能を発揮している
- SOLRを使用することで、Liferayのノードからインデックス作成の負担が軽減される
- インデックスリポジトリの一元化
- Solrは、カスタマイズを容易にする設定オプションが増えました。
デメリット
- Solrボックスがダウンした場合、すべてのノードはインデックスを持たないことになります(ただし、Solrに高可用性を与える分散/レプリケーションの設定があります)。 詳しくはこちらをご覧ください: Lucidworks ドキュメント.
- コンフィギュレーション/セットアップに時間がかかる
解像度
ユーザーは、3つのポータルインスタンスを設定します:
- Solr Server-Liferayノードのインデックス作成を行うノードです。
- ノード 1-このノードは Liferay を実行しており、ノード 2 とクラスタ化されています。
- Node 2-このノードは Liferay を実行しており、node 1 とクラスタ化されています。
Solr Nodeのセットアップ
- Tomcat 6 zip をダウンロードし、解凍してください。
- JAVA_HOME 環境 変数にJDKがインストールされている場所を設定します。
- Solr zipをダウンロードし、都合の良い場所に解凍してください。
- $SOLR_HOME ディレクトリを作成します。例えば、C:˶‾Program Files‾Solrです。 apache-solr-1.4.0example" に移動し、"solr" フォルダの内容を $SOLR_HOMEにコピーします。
- $APACHE-SOLR/dist/apache-solr-${solr.version}.war にある Solr フォルダから WAR ファイルを $TOMCAT_HOME/webapps にコピーする。ここで ${solr.version} は Solr のバージョン番号、すなわち 1.4.0 を表す。
.warファイルの名前を「solr.war」のように簡単なものに変更します。この名前は後で重要になります。
- $TOMCAT_AS_DIR/bin/catalina.bat に以下の行を追加します。
set JAVA_OPTS=%JAVA_OPTS% -Dsolr.solr.home="C:\Program Files\Solr"
注:これは、Solrのインスタンスを1つしか実行していないために動作します。 同じTomcatサーバーで複数のインスタンスを使用する場合、ユーザーはTomcat Context XMLファイルを作成する必要があります。
- Tomcatを起動します。 エラーがない場合は、http://localhost:8080/solr/admin を参照し、Solr Admin ページが正しく表示されることを確認します。
注:URLの「solr」部分は、.warファイルに付けた名前になります。
ノード1のセットアップ
- データベースをインストールし、リモート接続を許可するようにMySQLを設定します。
- Liferayバンドルをダウンロードします。
- $LIFERAY_HOME/data/にあるluceneフォルダを削除し、ポータルがSolrを指すようにします。
- 適切なJDBCの設定をしたportal-ext.propertiesファイルをセットアップする。
- 情報提供のために、次のプロパティを追加することができます: web.server.display.node=true これは、あなたが現在ログインしているノードを表示します。
- Marketplaceから適切なSolrプラグインをダウンロードする。 必ず、該当するポータルサイトのバージョンに合ったものをダウンロードしてください。 例えば、Portal 6.1 GA2+のユーザーは、 Liferay Solr Search Engineをダウンロードしてください。 新しいバージョンのポータルをお使いのお客様は、SOLR 3またはSOLR 4のいずれかをダウンロードしてください。
- .war アーカイブを開き、 $SOLR_WARにある solr-spring.xml というファイルを編集します。
- Solrサーバーのロケーション(複数可)を設定するBeanクラスを探します。 このような感じになるはずです:
<bean class="com.liferay.portal.spring.context.PortletBeanFactoryPostProcessor" />
<bean id="solrServer" class="com.liferay.portal.search.solr.server.BasicAuthSolrServer">
<constructor-arg type="java.lang.String" value="http://localhost:8080/solr/" /> - $SOLR_HOME が設定されている場所を指し示す値に変更します。 次のようになります: http://$IP_OF_SOLR_SERVER:8080/solr/
- Solrサーバーのロケーション(複数可)を設定するBeanクラスを探します。 このような感じになるはずです:
- $SOLR_WAR㊦にあるSchemaをコピーして、Solr boxの $SOLR_HOME/conf(confディレクトリを作成する必要があるかもしれません)に配置します。 これで、Solrを起動することができるようになりました。
- 編集したSolrプラグイン.warファイルをコピーして、Deployフォルダに配置します。
- Node 1のTomcat Serverを起動します。
Node 2のセットアップ
- TomcatサーバーにLiferayをダウンロードし、インストールする(バンドルを使用する場合もある)。
- Node 1のデータベースに接続するための適切なJDBC設定を含むportal-ext.propertiesファイルをセットアップします。 これについては、 クラスタ環境での Liferay Portal のインストールを参照してください。
- ノード2を起動します。
- すでにNode 1にデプロイされている変更後のSolr .warファイルをデプロイします。
SOLRのテスト
両方のNodeでLiferayを起動します。 Solrが正しく設定されているかどうかを確認する前に、両者が正しく起動することを確認してください。
ユーザーを作成する
Solrをテストする簡単な方法は、Node1にユーザーを作成し、Node2に変更が反映されるかどうかを確認することです。 左右の確認を忘れずに。
Node 2の新しいユーザーが見つかれば、Solrの設定は成功です。
ウィキを作成する
Solrをテストするもう一つの方法は、LiferayでWikiを作成し、Solrの管理コンソールから検索できるかどうかを確認することです。
- 例えば、「チョコレート」という名前のWikiを作り、本文に「チョコレート」と入れ、最後に「チョコレート」というタグを付けます。
- Solrの管理ウェブページに移動する
- "チョコレート "を検索する
- Solrが正しく設定されていれば、作成したWikiで検索結果が表示されるはずです:
期待される行動
各Liferayノードは、必要に応じて検索エンジンにリクエストを送り、検索インデックスを更新します。 これらの更新は、検索エンジンが独立してキューに入れ、自動的に処理されます。
ここでは、Solrがインデックスに変更を加える例を紹介します:
追加情報
Liferay Portal のクラスタ環境の構築については、 Liferay Portal のクラスタ環境へのインストールをご覧ください。
よくあるご質問
-
なぜ、Solrを別のアプリケーションサーバーにインストールする必要があるのでしょうか? Liferayと連動してインストールすることはできないのでしょうか?
理論的には、 yes、しかし、それはSolrを使用する目的から外れています。なぜなら、目的はLiferayのインストールのための処理を解放するために、検索のインデックス作成を別のボックスにオフロードすることだからです。
-
なぜ「SolrException:Bad Request "エラーが発生するのですが?
おそらく、Liferay Solr プラグイン .war の Schema.xml が に追加されず、 $SOLR_HOME/conf に追加されたのだと思います。
-
なぜ、「SolrException:Not Found」エラーが発生するのですが?
Solr-Spring.xmlの中でSolrのホームのURLが誤っていた可能性が高い。
-
Luceneからの移行はどのようにすればよいですか?
上記の手順で、再インデックスするだけです(特に「移行」の手順はありません)。 再インデックスに関して:
-
インデックスの再作成にはどれくらいの時間がかかるのでしょうか?
再インデックス化するデータのサイズ、SolrサーバーのJVM設定やアプリケーションの構成、Solrインスタンスの展開タイプ(シングルノードまたはSolrCloud)など、多くの要因に依存します。 デフォルトのLuceneエンジンを使ってポータル全体を再インデックスするのにかかる通常の時間は、大まかな推定を提供することができます。
Solrのパフォーマンスについては、こちら(https://wiki.apache.org/solr/SolrPerformanceFactors)を参照してください。 -
本番を落とさずにインデックスを張り直す方法はあるのでしょうか?
はい。 LiferayのSolrプラグインとSolrサーバーの両方が適切に設定されている限り、稼働中のLiferayサーバーのSolrへの切り替えはシームレスなプロセスで、本番サーバーを停止する必要はない。
-
再インデックス化の間、私のポータルはどうなりますか?
再インデックス作成中のLiferayポータルの可用性については、デフォルトのLuceneエンジンとSolrサーバーに違いはありません:プロセスが終了するまで、検索結果はゼロか不正確なカウントになることがあります。 そのため、サーバーの負荷が最も低くなる時間帯に、サーバー全体の再インデックスを予定しておくとよいでしょう。
-
他の環境でも使えるのでしょうか?
LinuxのJBossを使った同じプロセスを見るには、 ここをクリックしてください.