一:创建索引库
注意:在solr中,每个文档必须由id域,每个域必须先定义,后使用
1、schema.xml的配置:
(1) field:域的定义
name:域的名称
type:域的类型,类型在schema.xml中定义。是否分词在类型中定义
indexed:是否索引
stored:是否存储
multiValued:是否多值,value部分存储的是数组。
(2) dynamicField:动态域
name:域的名称,是一个表达式,表示如果域的名称和表达式能够匹配成功,那么这个域的名称就可以使用
(3) uniqueKey:主键的定义
(4) copyField:复制域
source:源域
dest:目标域
该域是一中查询优化的手段
(5) fieldType:域的类型定义
name:域的名称
class:类型的实现类
注意:只有solr.TextField类型允许自定义分词器,意思就是如果我们想要定义自己的分词器,就需要用TestField来定义类型
二:使用中文分词器的FieldType定义
1、实现步骤
(1)、把IK分词器的jar包添加到solr工程中
(2)、需要把IK的配置文件、停止词典、扩展词典加到solr的classpath下
(3)、在schema.xml中定义FieldType
<!-- 自定义的IK分词器的fieldType类型
class的值必须是solr.TextField
-->
<fieldType name="text_ik" class="solr.TextField" >
<!-- class属性的值为ik分词器的全类路径 -->
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer">
</analyzer>
</fieldType>
(4)、定义自己的Field域,使用的是text_ik这个fieldType
<!-- 定义自己的field域 -->
<!--product-->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<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_catalog_name" type="string" indexed="true" stored="true" />
<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>
(5)、保存文件,重启tomcat,查看solr中域的变化
三:导入数据库中的数据
百度网盘连接:http://pan.baidu.com/s/1skCddiX 密码:qgl2
将数据库中的数据导入到索引库,可以配置DataImport功能实现数据库导入
配置步骤:
1、把DataImport依赖的jar包导入solrcore中
2、在solrconfig.xml中配置requestHandler
<!-- 添加将数据库中数据导入索引库的requestHandler -->
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
3、在solrconfig.xml统计目录下创建data-cofnig.xml文件,配置数据库连接、sql语句以及结果集和solr中业务域的映射关系
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lucene"
user="root"
password="root"/>
<document>
<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<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>
4、重启tomcat,进入solr的Dataimport界面,点击Execute