solr学习笔记 -- day04 导入数据、自定义类型

本文介绍如何在Solr中配置中文分词器,并通过DataImport功能从数据库导入数据到索引库。主要内容包括定义自定义字段类型、设置复制字段及实现数据库数据导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:创建索引库

注意:在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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值