intra-mart Accel Platform Solr管理者ガイド 第5版 2018-08-01

4. Solrのセットアップ

IM-ContentsSearch を利用するための Solr のセットアップ方法について説明します。

4.1. 前提条件

注意

Solr はディスクアクセスが大量に発生する場合があります。
そのため、intra-mart Accel Platform がセットアップされたサーバと同一筐体に構築した場合、パフォーマンスに影響が出る可能性があります。
運用環境では intra-mart Accel Platform と Solr を別サーバに構築することを強く推奨します。

注意

Solr における最適化処理では、一時的に登録されている全データを複製します。
そのため、最適化処理時には、Solrサーバ上で、通常使用しているディスク容量の2倍以上のディスクの空き容量を必要としますので、注意してください。

4.2. セットアップ手順

IM-ContentsSearch では、 Solr のセットアップツールを提供しています。
セットアップツールで構築される Solr は、 IM-ContentsSearch 専用のカスタマイズが設定済みの状態です。
セットアップツールを利用することで以下の処理を行うことが可能です。
  • アプリケーションサーバ「Jetty」を利用した構築および起動
  • アプリケーションサーバ「Resin」上へ構築するためのファイル群の出力
  • アプリケーションサーバ「Tomcat」上へ構築するためのファイル群の出力
  • アプリケーションサーバ「Payara」上へ構築するためのファイル群の出力

コラム

弊社から提供しているセットアップツールはアプリケーションサーバの Jetty を同梱しています。
Jetty は主に開発・検証用の利用を想定しています。
Solr を構築するアプリケーションサーバ製品は任意に選択することが可能ですが、運用環境では Resin または Tomcat または Payara の利用を推奨します。

4.2.1. セットアップツールの取得・展開

  1. セットアップツールの取得

    Solr のセットアップツールを取得します。
    セットアップツールは以下のURLよりダウンロードできます。ダウンロードには製品のライセンスキーが必要です。
  2. セットアップツールの展開(解凍)

    セットアップツールのファイル <solr_setup.zip> を取得後、任意のパスに展開します。
    本書では、例として以下のディレクトリを指定します。
    • Windowsの場合

      C:\solr\solr_setup
      
    • Linuxの場合

      /usr/local/solr
      

    セットアップツールのファイルを展開したディレクトリを、以下 %SOLR_SETUP_HOME% と略します。

4.2.2. セットアップツールのコマンド一覧

以下のコマンドを入力してセットアップツールを実行するとセットアップツールのコマンド一覧とその説明が表示されます。

  • Windowの場合

    C:\solr\solr_setup> setup.bat
    
  • Linuxの場合

    /usr/local/solr/setup.sh
    
以下はWindowsでの出力例です。
C:\solr\solr_setup>
C:\solr\solr_setup> setup.bat
Buildfile: C:\solr\solr_setup\build\build.xml

usage:
     [echo] Welcome to the Apache Solr Installation!
     [echo] Use '' to display usage
     [echo] Use 'usage' to display usage
     [echo] Use 'jetty' to download the jetty zip file, solr zip file and the solr.war and unzip the zip files and config the jetty port
     [echo] Use 'jetty.start' to download the jetty zip file, solr zip file and the solr.war and unzip the zip files and config the jetty port and start the jetty
     [echo] Use 'resin' to download the solr zip file and the solr.war for resin and unzip the zip file
     [echo] Use 'tomcat' to download the solr zip file and the solr.war for tomcat and unzip the zip file
     [echo] Use 'payara' to download the solr zip file and the solr.war for payara and unzip the zip file

BUILD SUCCESSFUL
Total time: 1 second
セットアップツールの各コマンド一覧と説明は以下の通りです。
コマンドは、setup.bat (Windowsの場合) または setup.sh (Linuxの場合) のパラメータとして指定します。
  • パラメータを指定するコマンドの例

    Windowの場合 C:\solr\solr_setup> setup.bat resin
    Linuxの場合 /usr/local/solr/setup.sh resin
セットアップツールのコマンドとその説明
コマンド 実行内容
(なし) セットアップツールの説明を表示します。
usage セットアップツールの説明を表示します。
jetty
Solr が利用可能な状態の Jetty を構築します。
起動ポートは <%SOLR_SETUP_HOME%/build_user.properties>に指定されたポートに変更されています。デフォルトの起動ポートは 8983 です。
jetty.start jettyコマンドを実行後、アプリケーションサーバ Jetty を起動します。
resin Resin へのセットアップに必要なファイル群を dist ディレクトリへ出力します。
tomcat Tomcat へのセットアップに必要なファイル群を dist ディレクトリへ出力します。
payara Payara へのセットアップに必要なファイル群を dist ディレクトリへ出力します。

4.2.3. 環境構築手順

4.2.3.1. Jetty(開発向け)

Jetty を利用してSolrサーバを構築する場合は以下の手順を行ってください。

  1. コマンドの実行

    • Windowsの場合、コマンドプロンプトを起動して以下のコマンドを実行します。

      C:\solr\solr_setup> setup.bat jetty
      
    • Linuxの場合、以下のコマンドを実行します。

      /usr/local/solr/setup.sh jetty
      
    処理が完了するとセットアップに必要なファイル群が <%SOLR_SETUP_HOME%/dist/jetty> ディレクトリに出力されます。
  2. サーバの起動

    • Windowsの場合

      C:\solr\solr_setup> setup.bat jetty.start
      
    • Linuxの場合

      /usr/local/solr/setup.sh jetty.start
      

    コラム

    Jettyの起動時、以下のようなエラーが発生する場合、ポート番号の設定を変更してください。
    <%SOLR_SETUP_HOME%/dist/jetty/jetty/etc/jetty.xml> にてポート番号の設定ができます。

    エラーログ出力例

    2012-09-24 13:34:33.043:WARN::failed SocketConnector@0.0.0.0:8983: java.net.BindException: Address already in use: JVM_Bind
    2012-09-24 13:34:33.044:WARN::failed Server@9aba32: java.net.BindException: Address already in use: JVM_Bind
    2012-09-24 13:34:33.045:WARN::EXCEPTION
    java.net.BindException: Address already in use: JVM_Bind
    

4.2.3.2. Resin

Resin を利用してSolrサーバを構築する場合は以下の手順を行ってください。

  1. コマンドの実行

    • Windowsの場合、コマンドプロンプトを起動して以下のコマンドを実行します。

      C:\solr\solr_setup> setup.bat resin
      
    • Linuxの場合、以下のコマンドを実行します。

      /usr/local/solr/setup.sh resin
      
    処理が完了するとセットアップに必要なファイル群が <%SOLR_SETUP_HOME%/dist/resin> ディレクトリに出力されます。
  2. 出力ファイルのコピー

    <%SOLR_SETUP_HOME%/dist/resin/resin> ディレクトリ配下を <%RESIN_HOME%> へコピーします。

  3. ホームロケーションの設定

    <%RESIN_HOME%/conf/resin.xml> の </resin> の前に <%SOLR_SETUP_HOME%/dist/resin/env-entry.txt> の内容を追加します。

    env-entry.txt

    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-type>java.lang.String</env-entry-type>
       <env-entry-value>./solr</env-entry-value>
    </env-entry>
    
  4. サーバの起動

    Resinの起動に関しては 「intra-mart Accel Platform セットアップガイド」-「Web Application Server の起動・停止」を参照してください。

4.2.3.3. Tomcat

Tomcat を利用してSolrサーバを構築する場合は以下の手順を行ってください。

  1. コマンドの実行

    • Windowsの場合、コマンドプロンプトを起動して以下のコマンドを実行します。

      C:\solr\solr_setup> setup.bat tomcat
      
    • Linuxの場合、以下のコマンドを実行します。

      /usr/local/solr/setup.sh tomcat
      
    処理が完了するとセットアップに必要なファイル群が <%SOLR_SETUP_HOME%/dist/tomcat> ディレクトリに出力されます。
  2. 出力ファイルのコピー

    <%SOLR_SETUP_HOME%/dist/tomcat/tomcat> ディレクトリ配下を <%TOMCAT_HOME%> へコピーします。

  3. URIEncodingの設定

    <%TOMCAT_HOME%/conf/server.xml> の Connector タグに、属性 URIEncoding="UTF-8" を追加します。

    設定例(Tomcat7.0.30)

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"/>
    
  4. サーバの起動

    Tomcatの起動手順については構築した環境に応じた方法で起動してSolrが動作していることを確認してください。

4.2.3.4. Payara

Payara を利用してSolrサーバを構築する場合は以下の手順を行ってください。

  1. コマンドの実行

    • Windowsの場合、コマンドプロンプトを起動して以下のコマンドを実行します。

      C:\solr\solr_setup> setup.bat payara
      
    • Linuxの場合、以下のコマンドを実行します。

      /usr/local/solr/setup.sh payara
      
    処理が完了するとセットアップに必要なファイル群が <%SOLR_SETUP_HOME%/dist/payara> ディレクトリに出力されます。
  2. 出力ファイルのコピー

    <%SOLR_SETUP_HOME%/dist/payara/payara/solr> ディレクトリを <%PAYARA_HOME%/glassfish/nodes/localhost-domain1/%インスタンス名%> ディレクトリ直下へコピーします。

    コラム

    %インスタンス名% は Payara 上に作成したインスタンス名を指定します。
    例えば、imart-instance という名称でインスタンスを作成した場合、<%PAYARA_HOME%/glassfish/nodes/localhost-domain1/imart-instance>直下へコピーしてください。

    コラム

    以下のようなファイル/ディレクトリ構成になるようにコピーしてください。
    %PAYARA_HOME%/glassfish/nodes/localhost-domain1/%インスタンス名%/solr/solr.xml
    %PAYARA_HOME%/glassfish/nodes/localhost-domain1/%インスタンス名%/solr/default/conf
    
  3. solr.solr.homeの設定

    以下のシステムプロパティを設定してください。

    プロパティ名 solr.solr.home
    プロパティ値 ../solr
  4. サーバの起動

    Payaraの起動に関しては以下を参照してください。

4.2.4. Solr管理画面の確認

Solr管理画面へ接続し、「search」ボタンが正常に動作することを確認します。
  1. 以下のURLをWebブラウザのアドレスバーに入力して「Solr管理」画面が表示できることを確認します。

    http://<HOST>:<PORT>/solr/default/admin/
    
    図 Solr管理画面
  2. QueryStringのテキストエリアに 「*:*」と入力されていることを確認し、「Search」ボタンをクリックします。

  3. 検索に成功した場合、ブラウザに以下のようなXMLが表示されます。

    <response>
      <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">58</int>
        <lst name="params">
          <str name="hl.snippets">5</str>
          <str name="hl.useFastVectorHighlighter">true</str>
          <str name="echoParams">all</str>
          <str name="sort">record_date desc</str>
          <str name="start">0</str>
          <str name="q">*:*</str>
          <str name="rows">10</str>
          <str name="indent">on</str>
          <str name="version">2.2</str>
        </lst>
      </lst>
      <result name="response" numFound="0" start="0"/>
    </response>
    

4.3. 利用するJavaのバージョンについて

「Java SE Development Kit 7u40」、「Java SE Development Kit 7u45」、「Java SE Development Kit 7u51」 のバージョンで Solr を利用する場合、Solr のインデックスが破損して正常に動作しない不具合が確認されています。
そのため、不具合を回避するために下記のJVM起動オプションを必ず指定してください。
-XX:-UseSuperWord
「Java SE Development Kit 7u25」以前のバージョンを利用する場合は指定する必要はありません。
また、「Java SE Development Kit 7u55」以降のバージョンをご利用になる場合についても、上記問題は発生しません。
JVM起動オプションの指定方法については、利用する各アプリケーションサーバごとの設定方法を確認してください。

コラム

不具合の詳細については、 Java SE Development Kit 7u40 のリリースノート内に記述されている、
「Irregular crash or corrupt term vectors in the Lucene libraries.」
の項を参照してください。

Update Release Notes - Java SE Development Kit 7, Update 40

4.3.1. Jettyを利用する場合

セットアップツールに同梱されている Jetty を利用する場合には以下の手順でJVM起動パラメータを変更してください。
  1. OSに応じた起動スクリプトをエディタで開きます。

    • Windowsの場合

      C:\solr\solr_setup\dist\jetty\jetty\startup.bat
      
    • Linuxの場合

      /usr/local/solr/dist/jetty/jetty/startup.sh
      
  2. いずれのファイルにも共通して java -jar start.jar の記述があることを確認します。

  3. 確認した記述内容を java -XX:-UseSuperWord -jar start.jar と変更してください。