Solrライブラリ・パスの構成

DSE Searchが<lib>プロパティで定義されたディレクトリーにあるファイルを見つけられない場合の回避策。

DataStax Enterpriseのライブラリ・ファイルの場所は、オープン・ソースApache Solrの場所と同じではありません。solrconfig.xmlファイルの例では相対パスがサポートされていることを示していますが、DSE Searchは<lib>プロパティに対して設定された相対パス値をサポートしていないため、<lib>プロパティで定義されたディレクトリーにあるファイルを見つけられません。回避策として、カスタム・コードまたはSolr contribモジュールをSolrライブラリ・ディレクトリーに配置します。

デフォルトのSolrライブラリ・パスの場所は、インストールのタイプによって異なります。
  • パッケージ・インストールおよびInstaller-Services:/usr/share/dse/solr/lib
  • tarボール・インストールおよびInstaller-No Services:installation_location/resources/solr/lib
プラグインJARファイルが<lib>プロパティで定義されたディレクトリーに存在しない場合にDataStax EnterpriseでカスタムSolrライブラリーをデプロイしようとすると、失敗してjava.lang.ClassNotFoundExceptionが発生し、system.logに以下のようなエラーが記録されます。
ERROR [http-8983-exec-5] 2015-12-06 16:32:33,992 CoreContainer.java (line 956) Unable to create core: boogle.main 
org.apache.solr.common.SolrException: Error loading class 'com.boogle.search.CustomQParserPlugin' 
at org.apache.solr.core.SolrCore.(SolrCore.java:851) 
at org.apache.solr.core.SolrCore.(SolrCore.java:640) 
at com.datastax.bdp.search.solr.core.CassandraCoreContainer.doCreate(CassandraCoreContainer.java:675) 
at com.datastax.bdp.search.solr.core.CassandraCoreContainer.create(CassandraCoreContainer.java:234) 
at com.datastax.bdp.search.solr.core.SolrCoreResourceManager.createCore(SolrCoreResourceManager.java:256) 
at com.datastax.bdp.search.solr.handler.admin.CassandraCoreAdminHandler.handleCreateAction(CassandraCoreAdminHandler.java:117)
...
Caused by: org.apache.solr.common.SolrException: Error loading class 'com.boogle.search.CustomQParserPlugin' 
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:474) 
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:405) 
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:541) 
...
Caused by: java.lang.ClassNotFoundException: com.boogle.search.CustomQParserPlugin 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
...

回避策

以下の例では、com.boogle.search.CustomQParserPlugin-1.0.jarというJARファイル名のクラスを使用し、以下の手順に従ってすべてのDSE Searchノードでカスタム・プラグインを機能させます。
  1. 検索インデックス構成ファイルでパーサーを定義します。
    <queryParser name="myCustomQP" class="com.boogle.search.CustomQParserPlugin"/>
  2. Solrライブラリ・ディレクトリーにカスタム・コードまたはSolr contribモジュールを配置します。
  3. クラスターのすべてのDSE Searchノード上で、該当するlib/ディレクトリーにJARファイルをデプロイします。

    たとえば、パッケージ・インストールの場合は/usr/share/dse/solr/lib/com.boogle.search.CustomQParserPlugin-1.0.jarです。

  4. 新しい構成で検索インデックスを再読み込みします。