在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>
這樣,你便可以導入數據了