我是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;
答案 0 :(得分:1)
我是solr-jdbc项目的开发人员之一,尝试将我们的项目集成到当前的solr版本6.5.1中并按照以下步骤操作:
下载solr zip并解压缩
将您的字段类型放入托管模式文件:〜/.../ solr-6.5.1 / example / example-DIH / solr / solr / conf
doSomething
<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版本:在solr-jdbc-2.3.7文件夹中运行“mvn clean install”
将编译后的jar(solr-jdbc-2.3.7 / target / solr-jdbc-2.3.7.jar)放入〜/.../ solr-6.5.1 / dist /文件夹中
运行Solr DIH示例“〜/.../ solr-6.5.1 / bin / solr -e dih”
现在没有 NoClassDefFound 例外。
之后你必须在你的码头创建一个jndi资源,一切都运行正常。
问候, 托拜厄斯