Solr 初步使用以及可视化面板实现CURD和分词器

Solr简介
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G SolrJ操作提出查找请求(也可以提交json格式),并得到XML格式的返回结果.

Solr特点

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

可以用一句话来说Solr:高性能,企业级,基于java,Apache顶级开源,基于Lucene(高度可扩展,灵活的,先进的)搜索引擎,全文搜索引擎。

Lucene
既然我们学习了Solr,那就顺便了解一下Lucene吧。
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。

我们所学的Solr它是基于Lucene

了解搜索引擎
百度(baiBaidu)、 谷歌(Google)就是典型的全文搜索引擎。它们都是通过从互zhi联网上提取的各个网站的信息(以网页dao文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。

安装

下载地址:
在这里插入图片描述

安装
1、 将solr-7.7.2.zip文件拷贝到E盘;(或者其他盘都可以,只要目录中不要出现中文就行。)
2、 解压solr-7.7.2.zip文件,得到solr-7.7.2目录。
在这里插入图片描述
Solr配置文件详解:

  1. bin目录: 和其他软件的bin目录一样,bin目录是solr命令所在的目录,solr的所有命令都需要在 bin目录中执行。
  2. contribute目录:存放solr插件的目录,solr的很多插件都在此目录
  3. dist目录:存放的是solr和它爸爸Lucence的jar包
  4. docs目录:solr存放文本、文档、页面的目录,solr主页面就存放在此
  5. example目录:solr官方提供的solr配置示例的目录(不得不说还是很体贴呢,嘿嘿)
  6. licenses目录:solr存放许可证明的目录(都是很官方的文档,一般人用不上)
  7. server目录:个人认为solr最重要的目录,solr的启动目录,里面集成了solr自带的jetty服务器,我们创建的core也都存放在此,这个目录将会是我们经常访问的一个目录

3、运行cmd,执行命令进入E:\Program\Solr-_install\Solr\solr-7.7.2\bin
4、 执行命令:
开启命令:solr.cmd start
重启命令:solr restart –p 8983
关闭命令:solr.cmd stop -p 8983
5、 打开浏览器,输入地址:http://localhost:8983/solr/,界面如下:

在这里插入图片描述
6:core的创建方式有两种,第一种就是界面操作创建,第二种是通过命令创建。我们先说第一种:通过界面操作创建
在这里插入图片描述
core创建成功之后再主页面的Core Admin中会有显示,参考我上面那张图。创建成功之后进入到solr7.7.2——>server——>solr 目录能看到我们新建的core文件夹
在这里插入图片描述
进入文件夹中之后,映入眼帘的便如下图所示
在这里插入图片描述
到这里,我们的core就创建成功了,接下来干嘛?当然是学会配置和导数据啊!
ps:如果没有那两个文件夹自己在默认的里复制即可

使用:

1:将数据库驱动包放入solr项目工程中(我用的mysql,使用jar包mysql-connector-java-5.1.18-bin.jar);
2:在自己创建的core实例的conf文件中进行数据配置(我的是E:\Program\Solr-_install\Solr\solr-7.7.2\server\solr\core_demo1\conf\solr-data-config.xml),覆盖内容如下(数据库表自己根据配置自己建):

(PS1:在solr7.1.0中并没有solr-data-config.xml文件,需要自己手动创建,然后将内容复制到文件中)

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
	<dataSource 
	type="JdbcDataSource" 
	driver="com.mysql.jdbc.Driver" 
	url="jdbc:mysql://localhost:3306/springboot?characterEncoding=UTF-8" 
	user="root" 
	password="root"/> 
	
	<document>
		<entity name="app" query="select * from app" pk="id">
			<field column="id" name="id"/> 
			<field column="name" name="name"/> 
			<field column="score" name="score"/> 
		</entity>
	</document>
</dataConfig>
<commit/>

url=”jdbc:mysql://localhost:3306/springboot?characterEncoding=UTF-8” user=”root” password=”root” 这里配置了 mysql 的连接路径 , 用户名 , 密码

3:在E:\Program\Solr-_install\Solr\solr-7.7.2\server\solr\core_demo1\conf\schema.xml文件中添加如下字段信息:

	<field name="score" type="string" indexed="true" stored="true"/>

注意这里的配置是数据库里需要用到的字段,在分词时这两个字段已配置,故此步可省略。其中id字段已存。
4:在 E:\Program\Solr-_install\Solr\solr-7.7.2\server\solr\core_demo1\conf目录下的 solrconfig.xml 文件里 , 添加如下代码 :

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

5:把本地下载解压的 solr文件里dist 目录下的 solr-dataimporthandler.jar 和 solr-dataimporthandler-extras.jar 复制到Tomcat \webapps\solr\WEB-INF\lib 目录下;

该配置的都已经配置完了,下面就可以导入数据了打开我们的solr主页面,不用重启。
在这里插入图片描述
按照上面的步骤,导入成功之后在上方会有成功或失败的提示
在这里插入图片描述
接下来测试导入结果,先看查询

1:增加

进入控制台,选中 Collection, 点击 Documents

我们选择 json 的方式进行添加数据,如下图:
在这里插入图片描述

2:查询

在这里插入图片描述
查询详讲

3:修改

修改数据和添加的姿势基本一样,区别在于 documents 中,如果没有指定主键,则表示插入数据,并默认生成一个主键;如果指定了主键,且对应的主键不存在,则表示插入数据;若主键存在,则表示更新

在这里插入图片描述

4:删除

删除一个 or 多个数据时,咋一看,在控制台中好像并没有操作的入口,这里确实有必要注意一下,我们的操作界面依然是上面添加/修改的页面

请额外注意,我们选择 DocumentType 为 xml,在 doocuments 中,使用+标签来查询并删除

<delete><query>id:10</query></delete>
<commit/>

在这里插入图片描述

引入IK分词器实现分词:

1.下载ik分词器jar包,我下载的是ik-analyzer-solr7-7.x.jar,传送门

2…把jar包放到你刚刚mysql连接jar包的位置,也就是solr7.7.2/server/solr-webapp/webapp/WEB-INF/lib目录下

3.在solr7.7.2/server/solr-webapp/webapp/WEB-INF目录下新建文件夹“classes”

4.从ik分词器的jar包中也就是ik-analyzer-solr7-7.x.jar中解压出里面的IKAnalyzer.cfg.xml、ext.dic、stopword.dic这三个文件放到刚刚新建的classes目录下

这里解释一下为什么要这三个文件

IKAnalyzer.cfg.xml:ik分词器的主配置文件,默认配置了扩展词典和禁用词典,可以自主修改,也可以用它默认的

ext.dic:ik分词器的扩展词典,在里面可以配置ik分词器分辨不出来的词汇,注意该文档要保持无DOM,UTF-8编码格式(它默认就是这样)

stopword.dic:ik分词器的禁用词典,在里面可以配置禁用词汇,注意该文档要保持无DOM,UTF-8编码格式(它默认就是这样)

5.在managed-schema文件中引入ik分词器字段类型。

<fieldType name="ik_word" class="solr.TextField">
  <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

配置到该文件下面那一堆标签后面即可
然后修改要分词的字段类型为text_ik

<field name="userName" type="text_ik" indexed="true" stored="true" multiValued="true" />  
    <field name="merchant" type="text_ik" indexed="true" stored="true" />

重启solr,验证分词
在这里插入图片描述
索引分词和查询结果分词都可以验证我们的分词效果,遇到分词器无法辨别的词汇可以在扩展词典中配置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值