无法初始化类JdbcSynonymFilterFactory

时间:2017-05-08 21:42:36

标签: postgresql jdbc solr solrcloud

我是solr的新手,我想将一个带有JdbcSynonymFilter和JdbcStopFilter的字段类型添加到solr架构中。我在此链接中添加了与数据源相同的数据源:Loading stopwords from Postgresql to Solr6

然后我使用以下代码配置了managed-schema:

<fieldType name="new_string" class="solr.TextField">
     <analyzer>
        <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s]+" />
        <filter class="com.s24.search.solr.analysis.jdbc.JdbcSynonymFilterFactory"   
           sql="SELECT concat(term, '=>', use) as line FROM thesaurus;" 
           dataSource="jdbc/dsTest" ignoreCase="false" expand="true" />
        <filter class="com.s24.search.solr.analysis.jdbc.JdbcStopFilterFactory"   
        sql="SELECT stopword FROM stopwords" 
        dataSource="jdbc/dsTest"/>
     </analyzer>
    </fieldType>

我将solr-jdbc添加到dist文件夹,postgressql驱动程序,beanutils和dbutils到contrib / jdbc / lib文件夹。然后,我在data_driven_schema_configs的solrconfig.xml中包含了libs:

<lib dir="${solr.install.dir:../../../..}/contrib/jdbc/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-jdbc-\d.*\.jar" />

当我尝试启动SolrCloud时遇到以下错误。

  

&#34;无法初始化类com.s24.search.solr.analysis.jdbc.JdbcSynonymFilterFactory,trace = java.lang.NoClassDefFoundError:无法初始化类com.s24.search.solr.analysis.jdbc.JdbcSynonymFilterFactory& #34;

1 个答案:

答案 0 :(得分:1)

我是solr-jdbc项目的开发人员之一,尝试将我们的项目集成到当前的solr版本6.5.1中并按照以下步骤操作:

  1. 下载solr zip并解压缩

  2. 将您的字段类型放入托管模式文件:〜/.../ solr-6.5.1 / example / example-DIH / solr / solr / conf

  3. doSomething

    1. 将以下行添加到:〜/.../ solr-6.5.1 / example / example-DIH / solr / solr / conf / solrconfig.xml
    2. <fieldType name="new_string" class="solr.TextField">
         <analyzer>
            <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s]+" />
            <filter class="com.s24.search.solr.analysis.jdbc.JdbcSynonymFilterFactory"   
               sql="SELECT concat(term, '=>', use) as line FROM thesaurus;" 
               dataSource="jdbc/dsTest" ignoreCase="false" expand="true" />
            <filter class="com.s24.search.solr.analysis.jdbc.JdbcStopFilterFactory"   
               sql="SELECT stopword FROM stopwords" 
               dataSource="jdbc/dsTest"/>
         </analyzer>
      </fieldType>

      1. 编译解压缩的solr-jdbc版本:在solr-jdbc-2.3.7文件夹中运行“mvn clean install”

      2. 将编译后的jar(solr-jdbc-2.3.7 / target / solr-jdbc-2.3.7.jar)放入〜/.../ solr-6.5.1 / dist /文件夹中

      3. 运行Solr DIH示例“〜/.../ solr-6.5.1 / bin / solr -e dih”

      4. 现在没有 NoClassDefFound 例外。

        之后你必须在你的码头创建一个jndi资源,一切都运行正常。

        问候, 托拜厄斯