当前位置: 首页 > 工具软件 > solr-sql > 使用案例 >

solr-8.3.1版本连接MySQL、配置IK分词器

西门高歌
2023-12-01

连接数据库

1.将\solr\solr-8.3.1\dist下的两个jar:
solr-dataimporthandler-8.3.1.jar
和 solr-dataimporthandler-extras-8.3.1.jar
以及 mysql-connector-java.jar(需下载) 拷贝到 \solr\solr-8.3.1\server\solr-webapp\webapp\WEB-INF\lib文件夹下
2. 在文件夹 \solr\solr-8.3.1\server\solr中新建文件夹(例:test),拷贝configsets文件夹下_default中的conf文件夹到test中(configsets中其他文件夹中的conf文件夹也可以)
3.进入test中的conf文件夹中修改配置文件solrconfig.xml(\solr\solr-8.3.1\server\solr\test\conf\solrconfig.xml),打开文件找到下面语句

	<requestHandler name="/select" class="solr.SearchHandler">

在该语句上方添加如下语句

		<requestHandler name="/dataimport"
    	 class="org.apache.solr.handler.dataimport.DataImportHandler"> 
			<lst name="defaults"> 
				<str name="config">data-config.xml</str> 
			</lst> 	
		</requestHandler>

4.在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/book" 
	user="root" 
	password="root" />
    <document>
        <entity name="bookmanage" query="select * from bookmanage" deltaQuery="select * from bookmanage">
            <field column="b_id" name="b_id" />
	        <field column="b_name" name="b_name" />
	        <field column="b_author" name="b_author" />
            <field column="b_time" name="b_time" />
            <field column="b_type" name="b_type" />
        </entity>
    </document>
</dataConfig>

其中
query是获取全部数据的SQL
deltaImportQuery是获取增量数据时使用的SQL
deltaQuery是获取pk的SQL
parentDeltaQuery是获取父Entity的pk的SQL
5.在managed-schema中配置相应的域(放到任何地方都可以:建议放到最下面,方便修改),field:(确保数据库中有book数据库,数据库中有bookmanage表)

		<field name="b_name" type="string" indexed="true" stored="true"/> 
	
		<field name="b_author" type="string" indexed="true" stored="true"/>
	
		<field name="b_time" type="string" indexed="true" stored="true"/>
	
		<field name="b_type" type="string" indexed="true" stored="true"/>

6.重启服务,进入到solr页面(http://localhost:8983/solr)

		服务器重启:	solr.cmd restart -p 8983
		服务器关闭:	solr.cmd stop -p 8983(也可以直接关掉cmd窗口)

7.点击Core Admin,新建solr核心 corename和instanceDir的名称与我们新建的test文件夹名称相同,然后点击Add Core进创建成功了!
8.创建成功后到左侧的Core Selector中找到我们创建的test打开,要想查询数据,首先添加数据库
点击Dataimport,其中在Entity中就可以找到我们在配置文件中添加的数据库名称了,选择数据库,点击Execute(执行)
然后点击Query,什么都不选,直接点击ExecuteQuery就可以看到数据库中的数据了.

如果查询出来的数据发现有重复的:处理方法
在导入核心的时候点击Dataimport后,commit默认勾选,我们再把它上面的Clean勾选上重新查询就可以去掉重复的数据了;

配置IK分词器

1.拷贝jar包
ik-analyzer-5.3.0.jar(需下载)
到\solr\solr-8.3.1\server\solr-webapp\webapp\WEB-INF\lib下
2.拷贝classes文件夹到\solr\solr-8.3.1\server\solr-webapp\webapp\WEB-INF文件夹下(如果没有需要手动创建)
里面有三个文件,分别是
ik_ext.dic(里面自己定义一些词语句段)
ik_stopwords.dic(里面自定义一些英文单词)
IKAnalyzer.cfg.xml 中的配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">ik_ext.dic;</entry> 
	
	<!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">ik_stopwords.dic;</entry> 
</properties>

3.配置\solr\solr-8.3.1\server\solr\test\conf下的managed-schema文件
在最下面添加以下代码

	<!-- IK分词器 -->
	<fieldType name="text_ik" class="solr.TextField">
	<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>
<!-- IK分词器的域 -->
	<field name="title_ik" type="text_ik" indexed="true" stored="true" />
	<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

1.重启solr
2.进入到(http://localhost:8983/solr)
3.找到Core Selector,选择我们创建的核心(test),点击Analysis,在Field Value (Index)中输入在
ik_ext.dic 和ik_stopwords.dic中自定义的词句,在下面的下拉框中选择title_ik或者content_ik,点击右边的
Analyse Values就可以看到结果了

 类似资料: