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

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

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

回避策として、JARファイル、カスタム・コード、またはSolr contribモジュールをSolrライブラリー・ディレクトリーに配置します。

Solrライブラリ・パスのデフォルトの場所は、インストールのタイプによって異なります。
Installer-Services /usr/share/dse/resources/solr/lib
パッケージ・インストール /usr/share/dse/solr/lib
Installer-No Servicesおよびtarボール・インストール install_location/resources/solr/lib
プラグインJARファイルが、<lib>プロパティで定義されているディレクトリーに存在しないと、java.lang.ClassNotFoundExceptionを使用してカスタムSolrライブラリーをDataStax Enterpriseで展開する試みは失敗し、以下のように、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. 以下のようにしてsolrconfig.xmlファイルでパーサーを定義します。
    <queryParser name="myCustomQP" class="com.boogle.search.CustomQParserPlugin"/>
  2. Solrライブラリー・ディレクトリーにカスタム・コードまたはSolr contribモジュールを配置します。
  3. 該当するlib/ディレクトリーで、クラスターのすべてのDSE Searchノード上でJARファイルを展開します。

    たとえば、パッケージ・インストールは以下の場所になります。 /usr/share/dse/solr/lib/com.boogle.search.CustomQParserPlugin-1.0.jar

  4. 新しい構成でSolrコアを再度読み込みます。