在managed-schema
文件中,主要配置了solrcore的一些数据信息,包括Field
和FieldType
的定义等信息,在solr中,Field
和FieldType
都需要先定义后使用。
"id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
"*_i" type="int" indexed="true" stored="true"/>
<uniqueKey>iduniqueKey>
其中的id是在Field标签中已经定义好的域名,而且该域要设置为required为true。
一个managed-schema文件中必须有且仅有一个唯一键
source="cat" dest="text"/>
由dest
指定的目标域,必须设置multiValued
为true。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
analyzer>
fieldType>
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
fieldType>
<field name="text_ik" type="text_ik" indexed="true" stored="true" multiValued="false" />
需要往索引库添加的字段有:
pid、name、catalog、catalog_name、price、description、picture
经分析,由于中文分词器已经配置完FieldType,所以目前FieldType已经满足需要,无需配置。
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<field name="product_catalog" type="string" indexed="true" stored="true"/>
<field name="product_catalog_name" type="string" indexed="true" stored="false"/>
<field name="product_price" type="float" indexed="true" stored="true"/>
<field name="product_description" type="text_ik" indexed="true" stored="false"/>
<field name="product_picture" type="string" indexed="false" stored="true"/>
<field name="product_keywords" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<copyFile source="product_name" dest="product_keywords" />
<copyFile source="product_description" dest="product_keywords" />
该插件可以将数据库中指定的sql语句的结果导入到solr索引库中。
a)将/solr-6.6.2/distsolr-dataimporthandler-6.6.2.jar
拷贝到/solr_home/contrib/dataimporthandler/lib
b)将mysql的驱动包,复制到以下目录(注意:原来没有的文件夹就自己新建)
c)修改solrconfig.xml
,增加以下内容
"${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
"${solr.install.dir:..}/contrib/db/lib" regex=".*\.jar" />
在solrconfig.xml
中增加以下内容
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xmlstr>
lst>
requestHandler>
在solrconfig.xml
同级目录下,创建data-config.xml
<dataConfig>
<dataSource name="source"
type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr"
user="root" password="root"
batchSize="-1" />
<document>
<entity name="product" query="select pid,name,catalog,catalog_name,price,description,picture from products">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog" name="product_catalog"/>
<field column="catalog_name" name="product_catalog_name"/>
<field column="price" name="product_price"/>
<field column="description" name="product_description"/>
<field column="picture" name="product_picture"/>
entity>
document>
dataConfig>
上一篇:《Solr6.6.2之环境搭建》
下一篇:《Solr6.6.2之SolrJ》