solr-7.7.3配置详解,并且连接数据库 (一)

6 篇文章 0 订阅

第一步:Solr下载

官网:https://lucene.apache.org/solr/

solr包下载,里面有solr-7.7.3包和中文分词器、定时更新索引的包

在这里插入图片描述

第二步:solr配置

2.1、配置solr与tomcat整合:

官网下载一个tomcat:

官网:http://tomcat.apache.org
下载:apache-tomcat-9.0.43
jdk:1.8

将下载好的solr7.7.3解压缩

1、solr-7.7.3\server\solr-webapp\路径下的webapp改名为solr后拷贝到apache-tomcat-9.0.43\webapps\路径下
在这里插入图片描述

2、将solr-7.7.3\server\lib\extsolr-7.7.3\server\lib路径下的所有jar包拷贝到apache-tomcat-9.0.43\webapps\solr\WEB-INF\lib下,有相同的包直接覆盖
在这里插入图片描述2.2:配置solr的家目录

1、选一个目录存放solrhome目录我的建立在和tomcat存放目录的同级,新建一个solrhome文件夹作为solrhome目录,由于我tomcat放在E盘,我solrhome文件夹也放在E盘了

2、将solr-7.7.3\server\solr目录下的所有文件及文件夹拷贝到solrhome文件夹中,在将solr-7.7.3目录下的contribdist两个文件夹复制到solrhome
在这里插入图片描述
3、在solrhome里面在建一个logs文件夹用来存放日志,最终solrhome:

在这里插入图片描述

2.3、配置日志路径

1、在apache-tomcat-9.0.43\webapps\solr\WEB-INF目录下建立一个classes文件夹用于存放log4j的配置文件记录日志

2、复制solr-7.7.3\server\resources目录下的log4j2.xml配置文件到apache-tomcat-9.0.43\webapps\solr\WEB-INF\classes
在这里插入图片描述然后打开log4j2.xml配置日志的存放路径:
在这里插入图片描述
2.4:修改配置web.xml

1、在tomcatsolr工程文件夹的web.xml中即apache-tomcat-9.0.43\webapps\solr\WEB-INF下的web.xml中声明solrhome的位置:增加一行如下:

<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <!-- 写自己创建的solrhome的位置-->
    <env-entry-value>E:/solrhome</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
 </env-entry>

然后注释掉web.xml中的如下配置:

  <!-- Get rid of error message -->
  <!--
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>
  -->

结果如图:
在这里插入图片描述到这里solr配置就结束了,然后启动tomcat服务器访问

http://localhost:8080/solr/index.html

在这里插入图片描述
如果访问404的话:有可能没有将solr-7.7.3\server\lib\extsolr-7.7.3\server\lib路径下的所有jar包拷贝到apache-tomcat-9.0.43\webapps\solr\WEB-INF\lib

第三步:solr创建Core

solrCore就是Solr存放数据或者说是索引的地方,本质是一个文件夹,位置在solrhome目录下。

在solr管理首页点击Core Admin
在这里插入图片描述点击Add Core,我们认为会在core home路径下,创建了一个名为coreTest的文件夹并完成core的创建,然而并不是。(下图我将名字改成collection1了)
在这里插入图片描述报错了,报E:\solrhome\Colltion1’中找不到资源‘solrconfig.xml

找到solrhome文件夹在里面会发现只有collection1文件夹是一个空的,core并未成功创建,因为我们缺少solrconfig.xml,
在这里插入图片描述

将之前复制到solrhome中的solrhome\configsets\_default文件夹 下的conf文件夹复制到collection1文件夹下,再次回到首页点击Add Core就创建成功了。
在这里插入图片描述
点击Core Selector可以选择创建的Core查看具体信息
在这里插入图片描述

第四步:配置IK中文分词器

1、Managed-schema介绍
Managed-schema,在Solr创建的Coreconf目录下如:solrhome\collection1\conf,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldlypesFields和其他的一些缺省设置。
在这里插入图片描述2、安装IK中文分词器

ik中文分词器下载

第一步:把IK-Analyzer-7.2.1.jar添加到apache-tomcat-9.0.43\webapps\solr\WEB-INF\lib目录下。

第二步:复制IKAnalyzer的配置文件IKAnalyzer.cfg.xml和自定义词典ext.dic和停用词词典stopword.dicapache-tomcat-9.0.43\webapps\solr\WEB-INF\classes下。这一步是用来配置自定义分词和自定义停词的,一些专有名词,我们希望它能够作为独立的词条,这叫做扩展词;一些助词,谓词我们不希望它被作为词条,这叫停词。
在这里插入图片描述在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">ext.dic;</entry> 
	
	<!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic;</entry> 
	
</properties>

示例:
stopword.dic扩展词文件中加入“而且”词条之前
ik分词器将“善良而且坚强”分词为 “善良”,“而且”,“坚强”三个词条,
加入之后
ik分词器将“善良而且坚强”分词为 “善良”,“坚强”两个词条,

ext.dic扩展词文件中加入“牛二瓦”词条之前
ik分词器将“牛二瓦”分词为 “牛”,“二”,“瓦”三个词条,
加入之后
ik分词器将“牛二瓦”分词为 “牛二瓦”,“二”,“瓦”三个词条(如果不想,二和瓦这两个字,就将这两个字加入到stopword.dic中),

第三步:配置Coremanaged-schema文件,目录solorhome\collection1\conf

<!--ik分词器配置-->
	<fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	</fieldType>

	<field name="content_ik" type="text_ik" indexed="true" stored="false"/>

保存,重启tomcat就可以使用IK分词器了

solr管理页面选择核然后选择analysis就可以查看分词效果了
在这里插入图片描述

第五步:连接数据库导入数据

使用dataimport插件批量导入数据。

1、把dataimport 插件依赖的jar包添加到solrcore中,路径:collection1\lib(没有lib文件夹需要创建一个)。
在这里插入图片描述还需要连接mysql数据库所以导入mysql的驱动包mysql-connector-java-8.0.11.jar

结果下图所示:
在这里插入图片描述2、配置核的核心配置文件solrconfig.xml(目录:solrhome\collection1\conf),在其中添加一个requestHandler

<!-- 配置导入数据的requestHandler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
</requestHandler>


配置中涉及到data-config.xml配置文件用于存放数据库连接信息,在solrconfig.xml同级目录下创建一个data-config.xml
在这里插入图片描述然后配置data-config.xml,我这边连接的是我本地数据库,user和password是数据库账号和密码,我这边用到的sql

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=UTC" user="root" password="root" />
<document>
	<!--name 使用数据库的表名 -->
    <entity name="t_shop_product" 
		query=" SELECT * FROM t_shop_product WHERE rec_status='N'" 

		>
		<!--column 是数据库的表的列,name是solr中的列名 需要在schema.xml中配置规则  -->
		<field column="id" name="id"/>
        <field column="pro_code" name="pro_code"/>
       <field column="pro_name" name="pro_name"/>
        <field column="pro_type_id" name="pro_type_id"/>
        <field column="pro_img" name="pro_img"/>
        <field column="price" name="price"/>
 		<field column="currency" name="currency"/>
        <field column="origin" name="origin"/>
		<field column="pro_num" name="pro_num"/>
        <field column="pro_des" name="pro_des"/>
        <field column="view_num" name="view_num"/>
        <field column="bug_num" name="bug_num"/>
        <field column="pro_tag" name="pro_tag"/> 
		<field column="shop_id" name="shop_id"/> 		
 		<field column="is_featured" name="is_featured"/> 		
 		<field column="shop_type_id" name="shop_type_id"/> 		
 		<field column="is_shelf_time" name="is_shelf_time"/> 		
 		<field column="is_shelf" name="is_shelf"/> 
		<field column="is_recom" name="is_recom"/> 			
		<field column="memo" name="memo"/> 	
		<field column="update_time" name="update_time"/> 
		<field column="creator" name="creator"/> 
		<field column="create_time" name="create_time"/> 		
		<field column="modifier" name="modifier"/>
		<field column="modify_time" name="modify_time"/>
		<field column="rec_status" name="rec_status"/>
		 					
    </entity>
</document>
</dataConfig>

由于将数据库字段映射为solr域而solr中没有定义这些域,所以就需要手动配置。

下面就来说明关于设置业务系统Field。

3、设置业务系统Field

在这里插入图片描述managed-schema里面添加下面这些配置

<!-- product,在solr7中floatdouble之类的都是系统自带pfloat,pdouble -->
	<field name="pro_code" type="string" indexed="true" stored="true"/>
	<field name="pro_name" type="text_ik" indexed="true" stored="true"/>
	<field name="pro_type_id" type="string" indexed="true" stored="true"/>
	<field name="pro_img" type="string" indexed="true" stored="true"/>
	<field name="price" type="text_ik" indexed="true" stored="true"/>
	<field name="currency" type="string" indexed="true" stored="true"/>
	<field name="origin" type="text_ik" indexed="true" stored="true"/>
	<field name="pro_num" type="pint" indexed="true" stored="true"/>
	<field name="pro_des" type="string" indexed="true" stored="true"/>
	<field name="view_num" type="pint" indexed="true" stored="true"/>
	<field name="bug_num" type="pint" indexed="true" stored="true"/>
	<field name="pro_tag" type="string" indexed="true" stored="true"/>
	<field name="shop_id" type="string" indexed="true" stored="true"/>
	<field name="is_featured" type="string" indexed="true" stored="true"/>
	<field name="shop_type_id" type="string" indexed="true" stored="true"/>
	<field name="is_shelf_time" type="pdate" indexed="true" stored="true"/>
	<field name="is_shelf" type="string" indexed="true" stored="true"/>
	<field name="is_recom" type="string" indexed="true" stored="true"/>
	<field name="memo" type="string" indexed="true" stored="true"/>
	<field name="update_time" type="pdate" indexed="true" stored="true"/>
	<field name="creator" type="string" indexed="true" stored="true"/>
	<field name="create_time" type="pdate" indexed="true" stored="true"/>
	<field name="modifier" type="string" indexed="true" stored="true"/>
	<field name="modify_time" type="pdate" indexed="true" stored="true"/>
	<field name="rec_status" type="string" indexed="true" stored="true"/>

	<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    
	<copyField source="pro_name" dest="product_keywords"/>
	<copyField source="price" dest="product_keywords"/>
	<copyField source="origin" dest="product_keywords"/>

其中product_keywords是新增加的一个多值域,而copyField则是用于拷贝,将pro_name,price,origin拷贝到product_keywords域中,这样在搜索的时候就不需要分别搜索那三个域,而是直接搜索product_keywords一次就可以返回搜索结果,提高搜索速度。

在这里插入图片描述配置好这些以后,重启服务器会可以打开dataimport

4、导入数据
在这里插入图片描述上图我用的是别人的,我的是:
在这里插入图片描述
接着可以搜索一下,可以看到搜索出来数据了

在这里插入图片描述

这是我这次的demo,里面就是一个可以启动的tomcat,直接启动就行了,启动前数据库sql要导入本地,并且修改solrhome\collection1\conf里面的data-config.xml,将数据库连接信息改成自己的就行了
在这里插入图片描述最后浏览器访问就行了:http://localhost:8080/solr/index.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值