Documentation

Solrのインストール

Solrは、Apache Luceneをベースに開発されたエンタープライズサーチプラットフォームとして人気があります。 信頼性、スケーラビリティ、フォールトトレラントに優れています。 詳しくは こちら です。

ここでは、Liferay 7.1~7.3用のSolr 8のインストールについて説明します。 これらはLiferay 7.1-7.2用のSolr 7をインストールする際にも同様に適用されますが、バージョン名の調整が必要な場合があります。

重要

  • LiferayのSolrサポートは非推奨で、Solr 8が最後にサポートされたSolrバージョンです。 Elasticsearch に移行することを検討してください。

  • Solrをインストールする際には、注意すべき重要な制限事項があります。 インストールを進める前に、 Solrの制限 をお読みください。

これらの用語を覚えておいてください。

Solr Home : Solrのメイン構成ディレクトリである solr-[version]/server/solr/を示します。 ここでは、Liferayコアの設定を行います。

Liferay Home : Liferayインストールのルートフォルダ。 osgi, deploy, data, and license フォルダなどが含まれています。

互換性

パッチレベルごとの互換性のあるSolrとLiferayのバージョンに関する詳細な情報については、 検索エンジン互換性マトリクス を参照してください。

Elasticsearchのみの機能を無効にする

Liferay Connector to Solrをインストールする前に、ブラックリストまたはその他の方法で

  • DXPの機能のうち、Elasticsearchでのみ動作するモジュール

  • Liferay Connector to Elasticsearchモジュールの組み合わせ

ちなみに

OSGiランタイムにデプロイされたモジュールを検索し、シンボリックネームでリストアップするには、Gogoシェルのコマンド b [substring-to-search] -sを使用します。 シンボリックネームは、blacklistBundleSymbolicNames`プロパティに入力する値です。

以下のコマンドは、ブラックリストに登録しなければならないモジュールのリストを返します。

lb -s | grep 'search' | grep 'elasticsearch|tuning'

Elasticsearchのみの機能のブラックリスト化

Liferay DXPをご利用の方は、ブラックリスト機能を使ってElasticsearchのみの機能を無効にしてください。 CEユーザーもこの方法を使うことができます。

  1. 以下の設定ファイルを作成します

    com.liferay.portal.bundle.blacklist.internal.BundleBlacklistConfiguration.config
    
  2. 以下のコンテンツを指定します

    blacklistBundleSymbolicNames=[\
         "com.liferay.portal.search.elasticsearch6.api",\
         "com.liferay.portal.search.elasticsearch6.impl",\
         "com.liferay.portal.search.elasticsearch6.spi",\
         "com.liferay.portal.search.elasticsearch7.api",\
         "com.liferay.portal.search.elasticsearch7.impl",\
         "com.liferay.portal.search.elasticsearch7.spi",\
         "com.liferay.portal.search.tuning.rankings.web",\
         "com.liferay.portal.search.tuning.synonyms.web",\
         "com.liferay.portal.search.tuning.web",\
         "com.liferay.portal.search.tuning.web.api"\
    ]
    
  3. Liferay Home/osgi/configsに配置してください。

Elasticsearchのみの機能を持つモジュールの停止

アプリケーションマネージャとGogoシェルは、 osgi/state フォルダを頼りに、バンドルの状態を「記憶」しています。 このフォルダを削除すると( Liferay DXPのパッチ適用時に推奨)、Elasticsearchコネクタが再インストールされ、自動的に起動されます。 Liferay CEのユーザーは、ブラックリスト方式を使用するか、App ManagerまたはGogoシェルでElasticsearchおよび検索チューニングモジュールを無効にすることができます。

アプリケーションマネージャで無効にするには

  1. [コントロールパネル] → [アプリ] → [アプリマネージャー] に移動します。

  2. アプリケーションマネージャで、 elasticsearch を検索します。 Elasticsearch 6/7モジュールへのLiferayコネクタを見つけて、[アクション(Actions)]メニューを開きます。 無効にする を選択します。 これにより、バンドルはインストールされたままになりますが、OSGiランタイムでは停止されます。 検索チューニングモジュールも同様です。

Felix Gogo shellの を使用して、Elasticsearchモジュールと検索の調整モジュールを停止する場合。

  1. lb -s | grep 'search' | grep 'elasticsearch|tuning'を入力します。

    Elasticsearchへのコネクタや検索チューニングモジュールなど、いくつかのアクティブなバンドルが表示されます。

  2. リストアップされた各バンドルに対して、 stop [bundle ID]と入力します。

Solrコネクタのダウンロード

Liferay Connector to Solr [7、8]をインストールするには、 Liferay Marketplace に移動し、Liferayのバージョンに対応するアプリのバージョンをダウンロードします。

お使いのLiferayのバージョンとパッチレベルで互換性のあるアプリケーションのバージョンについては、 検索エンジン互換性マトリクス を参照してください。

Solrのインストールと設定

先に進む前に、Liferayインスタンスを停止します。

Liferay用のSolrをインストールし、適切に設定するために。

  1. 互換性のある Solrサーバーをダウンロードし、解凍します。 以下のリンクは便宜上のものであり、執筆時に互換性のある最新のSolrバージョンを表しています。 新しい互換性のあるバージョンがあるかどうかは、 検索エンジン互換性マトリクス を参照してください。 このガイドでは、以下のバージョンを例に挙げています。

  2. Solrホーム(solr-[version]/server/solr)に移動し、 liferayという新しいフォルダを作成します。

  3. 2つの新しいサブフォルダーを作成します。 liferay/confliferay/data

  4. Solr_Home/configsets/_default/conf の内容を、 Solr_Home/liferay/confにコピーします。

  5. Liferay Connector to Solr 8のLPKGファイルをアーカイブマネージャーで開きます。

    次に、 Liferay Connector to Solr 7/8 - Impl.lpkgを開きます。

    最後に、 com.liferay.portal.search.solr7/8.impl.jar ファイルを開き、抽出します。

    META-INF/resources/solrconfig.xml
    

    そして

    META-INF/resources/schema.xml
    

    変更後

    Solr_Home/liferay/conf
    

    これは、現在の solrconfig.xmlschema.xml ファイルを、Liferayから来るデータをどのようにインデックスするかをSolrに伝えるもので置き換えます。

  6. core.properties ファイルを Solr_Home/liferay に作成し、この設定を追加します。

    config=solrconfig.xml
    dataDir=data
    name=liferay
    schema=schema.xml
    
  7. チェックポイント: Solr_Home/liferay フォルダがこのような構造になっていることを確認してください。

    liferay
    ├── conf
    │   ├── lang
    │   │   ├── contractions_ca.txt
    │   │   ├── ....txt
    │   ├── managed-schema
    │   ├── protwords.txt
    │   ├── schema.xml
    │   ├── solrconfig.xml
    │   ├── stopwords.txt
    │   └── synonyms.txt
    ├── core.properties
    └── data
    
  8. Solrをインストールしたトップレベルのフォルダー(solr-[version])から次のように入力して、Solrサーバーを起動します。

    ./bin/solr start -f
    
  9. Solrサーバーは、デフォルトではポート 8983 で待機します。 http://localhost:8983/solr/#/~cores へ行きます。(ローカルでテストしていると仮定してlocalhost をホストとします) liferay コアが利用可能なことを確認します。

これでSolrがインストールされ、起動しました。 次に、Liferay用のSolrコネクタを構成し、インストールします。

Solrコネクタのインストールと設定

Liferay Connector to Solrのデフォルト構成は、Solr自身のデフォルトと一致するため、デフォルトのコネクタ構成はテストインストールでも機能します。 利用可能な設定の完全なリストは、 設定のリファレンス を参照してください。 本番環境のコネクターでは、最低でも読み取り用と書き込み用のURLが設定されている必要があります。

本番環境では、 Liferay_Home/osgi/configs フォルダに配置された設定ファイルを使用して、Solrコネクタのデフォルト設定を編集するのが一般的です。

  1. ファイルに名前を付けます。

com.liferay.portal.search.solr8.configuration.SolrConfiguration.config
または
com.liferay.portal.search.solr7.configuration.SolrConfiguration.config

また、UIを使ってコネクタを構成することもできます。 [コントロールパネル]の → [構成] → [システム設定]で、Solr 7システム設定のエントリーを見つけます。

Solrの設定は、Liferayのシステム設定アプリケーションから行うことができます。 これは、開発やテストの際に最も有効です。

  1. アプリのLPKGがダウンロードされたら、それを Liferay_Home/osgi/marketplace にコピーし、任意の設定ファイルを Liferay_Home/osgi/configsに置きます。

  2. Liferayを起動します。

  3. LiferayのデータをSolrに再インデックスします。 グローバルメニューを開き、 [コントロールパネル] → [設定] → [検索] へ行きます。 [インデックス アクション]ウィンドウで、 [実行] オプションの隣にある [すべての検索インデックスを再作成] をクリックします。

    スペルチェック用のインデックスも再作成してください。

    Solrの接続は、Search管理コンソールで確認できます。

SolrCloudによる高可用性

Solrサーバーのクラスターが必要な場合は、SolrCloudを使用します。 なお、SolrCloudを実運用で使用するには、 外部のZooKeeperアンサンブル を設定する必要があります。 ZooKeeper は、SolrCloudクラスターのような分散システムを管理するための、集中型のコーディネーションサービスです。

ここで紹介する手順は、LiferayでSolrCloudを設定するために必要な最低限のものと考えてください。 例えば、ここでは1台のマシンでSolrCloudを構成する方法を説明していますが、本番環境では複数の物理マシンや仮想マシンを使用します。 ここでは、 Solrのインストールと設定 のセクションに沿って説明しています。 詳しくは SolrCloudガイドをご参照ください .

  1. Solrサーバーが稼働している場合は停止します。

  2. Solr_Home/configsets フォルダに移動し、以下のフォルダを作成します。

    liferay_configs

  3. conf フォルダを、 Solr_Home/liferay から、先ほど作成した liferay_configs フォルダにコピーします。

    configset/liferay_configs フォルダには、SolrCloudのLiferayコレクションの設定が含まれており、ZooKeeperにアップロードされます。 先に設定した conf フォルダを、 liferay サーバーからコピーする際には、Liferay Solr Adapterに付属する schema.xmlsolrconfig.xml ファイルを使用します。

  4. インタラクティブなSolrCloudセッションを起動して、SolrCloudクラスターを構成します。

    ./bin/solr -e cloud
    
  5. セットアップ・ウィザードを完了する。 ここでは、2ノードのクラスターを作成する手順を説明します。

    • ノード数には 2 を入力してください。

    • ポートは 89837574 (デフォルト)を指定します。 両ノードは、ログに出力されるスタートコマンドで起動されます。

      Starting up Solr on port 8983 using command:
      "bin/solr" start -cloud -p 8983 -s "example/cloud/node1/solr"
      
      Waiting up to 180 seconds to see Solr running on port 8983 [|]  [-]  
      Started Solr server on port 8983 (pid=8846). Happy searching!
      
      
      Starting up Solr on port 7574 using command:
      "bin/solr" start -cloud -p 7574 -s "example/cloud/node2/solr" -z localhost:9983
      
      Waiting up to 180 seconds to see Solr running on port 7574 [|]  [/]  
      Started Solr server on port 7574 (pid=9026). Happy searching!
      
    • コレクション名 liferay

    • コレクションを2つのシャードに分割します。

    • シャードごとに2つのレプリカを指定します。

    • コンフィギュレーションを選択するプロンプトが表示されたら、 liferay_configs と入力します。 クラスタが起動すると、以下のようなログメッセージが表示されます。

    SolrCloud example running, please visit http://localhost:8983/solr
    

これで、ローカルのSolrCloudクラスターに liferay という新しいコレクションができました。 status コマンドを実行して、その状態を確認します。

./bin/solr status

ログ出力では、ノードが見つかったことと、各ノードの情報が一覧表示されます。

Found 2 Solr nodes: 

Solr process 223597 running on port 8983
{
  "solr_home":"/home/user/liferay-bundles/solr8_7.3/solr-8.6.3/example/cloud/node1/solr",
  "version":"8.6.3 e001c2221812a0ba9e9378855040ce72f93eced4 - jasongerlowski - 2020-10-03 18:12:03",
  "startTime":"2021-03-23T18:26:45.450Z",
  "uptime":"0 days, 0 hours, 25 minutes, 4 seconds",
  "memory":"306.5 MB (%59.9) of 512 MB",
  "cloud":{
    "ZooKeeper":"localhost:9983",
    "liveNodes":"2",
    "collections":"1"}}
...

SolrCloudモードで実行中のSolrを停止するには、次のように stop コマンドを使用します。

./bin/solr stop -all

SolrCloud用Solrコネクタの設定

あとは、LiferayのSolrコネクタで、クライアントタイプを CLOUD と指定するだけです。

  1. システム設定」またはOSGiの設定ファイルから、 Client TypeCLOUD に設定します。

    clientType="CLOUD"
    
  2. Liferayが起動していない場合は、Liferayを起動します。 SolrコネクタLPKGをインストールした後に初めて起動した場合は、ログの指示に従ってLiferayを再起動してください。

[Solr システム設定]のエントリーから、「Client Type」を「Cloud」に設定します。

Solr コネクタ設定リファレンス

注釈

Solr コネクタのプロパティは、Solr 7 および Solr 8 コネクタにも同様に適用されます。 設定ファイル名を(solr8ではなく)solr7に変更します。 システム設定で、_Solr 7_で始まるエントリを参照してください。

以下に、デフォルトの設定と、Solrコネクタ・アプリケーションをインストールしたときに利用可能になる設定(システム設定の検索カテゴリ、または .config ファイルで設定可能)を示します。 これらの設定は、限られた値を受け入れるものです。

Configuration File: com.liferay.portal.search.solr8.configuration.SolrConfiguration.config \ **System Settings Entry:**Solr 8

authenticationMode=["BASIC" or "CERT"]
clientType=["REPLICATED" or "CLOUD"]
defaultCollection="liferay"
logExceptionsOnly=B"true"
readURL="http://localhost:8983/solr/liferay"
writeURL="http://localhost:8983/solr/liferay"
zkHost="localhost:9983"

Configuration File: com.liferay.portal.search.solr8.configuration.SolrHttpClientFactoryConfiguration.config \ **System Settings Entry:**Solr 8 HTTP Client Factory

basicAuthPassword="solr"
basicAuthUserName="solr"
defaultMaxConnectionsPerRoute="20"
maxTotalConnections="20"

Configuration File: com.liferay.portal.search.solr8.configuration.SolrSSLSocketFactoryConfiguration.config \ **System Settings Entry:**Solr 8 SSL Factory

keyStorePassword="secret"
keyStorePath="classpath:/keystore.jks"
keyStoreType="JKS"
trustStorePassword="secret"
trustStorePath="classpath:/truststore.jks"
trustStoreType="JKS"
verifyServerCertificate=B"true"
verifyServerName=B"true"

これで、Liferay for SolrとSolr for Liferayの設定ができました。 Solrは 廃止予定なので、ご注意ください。 Solrを使うことに制約がない場合は、Elasticsearchを使ってください。