在solr_home中有每个例子的配置文件,每建成一个会有默认的配置,具体建立的方法不介绍了。现在我们介绍连接数据库,在建成的例子文件下找到conf文件夹,配置其中的data-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solrdb?useSSL=true&verifyServerCertificate=false&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8"
user="root"
password="*******" />
<!--
数据库的基本情况 多匹配与编码方式等
-->
<document>
<entity name="php_code" transformer="HTMLStripTransformer" dataSource="jdbcDataSource" pk="id"
query="SELECT id,code FROM php_code">
<field column='id' name='id' />
<field column='code' name='code' stripHTML="true" />
<!--
其中,id与column为数据库中的属性,因为我存的是代码段,所以我加了HTML标签,这个可以不管
-->
</entity>
</document>
</dataConfig>
接下来配置managed-schema(高版本是这个,低版本是schema.xml)
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- docValues are enabled by default for long type so we don't need to index the version field -->
<field name="_version_" type="plong" indexed="false" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="code" type="text_ik" indexed="true" stored="true"/>
发现了没有,其中包括了id跟之前的code,id默认有所以不管它, 重点介绍field中的code属性,type是分词方式,这里用了text_ik分词方式(一般都需在网上把这个jar包下载),indexed是是否索引,stored是是否在之后检索中显示出来。如果你配置的分词方式是默认没有的,比如这个"text_ik" ,那么要在下面说明
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory" />
</analyzer>
</fieldType>
顾名思义,"index"与"query"分别代表索引与查询的,fiter是需要的过滤器,有什么特殊需求可以查看solr的每种过滤器,本文中采用的是不区分大小写跟过滤html标签。
最后,你得在solr配置中加入从数据库导入的声明,在solrconfig.xml中加入:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
这样,你便可以导入数据了