安装使用Solr

安装使用Solr

本文实例:solr:8.10.0 jdk:1.8

一. 简介

基于Luncene的全文搜索服务器,同时对其进行了扩展(扩展了面向抽象编程的地方,比如分词器,查询),提供了比Lucene更为丰富的查询语言(比如,过滤器),同时实现了可配置(跟hadoop整合,之前索引结构写在代码中,现在提前定义好)、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

安装配置

Linux配置方式与window大差不差,只是在某些命令后加入 -force

二、下载安装solr

将下载好的安装包解压到一个没有空格,没有中文的路径

下载地址https://solr.apache.org/downloads.html

image-20211012095948060

下载后解压文件:

image-20211012100021046

启动solr,进入bin目录执行solr.cmd start即可启动solr服务

cd bin
#启动solr
solr.cmd start
# 关闭solr
solr.cmd stop -all

#Linux操作
#开启
solr start -force
#关闭
solr stop -all -force

image-20211012100136320

启动成功提示!打开localhost:8983就可以看到已经启动了

image-20211012100206588

三、创建Core

默认情况下直接添加是不可以的,会报错

image-20211012101317673

有两种方式:

第一种方式 比较复杂

需要手动进入 solr的安装目录 > server> solr 下创建需要创建的core名称文件夹

此时新建的名称就是core的名称,创建需要复制同级项目下的conf文件到新创建的文件夹中

进入浏览器选择Core Admin进行创建,此时name和instanceDir需要与新建的文件夹名称一致

第二种方式 简单推荐

需要启动服务后执行此命令

//创建core
solr.cmd create -c 名称

image-20211012133717284

这样就直接创建好了一个core,打开浏览器刷新就可以看见创建好的Core了

四、连接Mysql数据库

  • 添加依赖包

需要以下三个依赖包

名称位置
solr-dataimporthandler-x.x.x.jar安装根目录下的dist文件夹内
solr-dataimporthandler-extras-8.2.0.jar安装根目录下的dist文件夹内
mysql-connector-java.jar找到合适的mysql依赖(maven…)

需要找到以上文件,将三个文件复制到 solr安装目录下的**/server/solr-webapp/webapp/WEB-INF/lib**文件夹下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iga3mlJ5-1634109358631)(C:/Users/xiaoge/AppData/Roaming/Typora/typora-user-images/image-20211012140133156.png)]

  • 修改配置文件 solrconfig.xml

    修改当前创建core名称目录下的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>
    

    如图:

    image-20211012140709274

  • 新建data-config.xml文件

    在当前创建core文件目录下的conf目录下创新建data-config.xml文件,文件内容如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
    	<dataSource name="source1" type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver"
    				url="jdbc:mysql://localhost:3306/test1" user="root" password="root"
    				encoding="UTF-8"/>
    	<document>
    		<entity name="tb_article_info" processor="SqlEntityProcessor" pk="id"
    			query="select id,article_name,article_abstract from tb_article_info">
    				<field name="id" column="id"/>
    				<field name="article_name" column="article_name"/>
    				<field name="article_abstract" column="article_abstract"/>
    		</entity>
    	</document>
    </dataConfig>
    

    这里配置自己的数据库以及表信息和映射字段信息

    如果使用Mysql数据库版本为8.x则推荐使用驱动类 com.mysql.cj.jdbc.Driver,需要使用Mysql8.0驱动包

  • 修改文件managed-schema

    修改当前创建Core目录下的conf文件夹下的managed-schema

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="article_name" type="string" indexed="true" stored="true"/>
    <field name="article_abstract" type="string" indexed="true" stored="true"/>
    

    根据表字段进行映射

    重启solr服务

    image-20211012163409085

    image-20211012163459070

    这样就已经将数据导入到Solr中了,可以查询一下是否有数据

    image-20211012163606645

测试ok!

分词操作

打开浏览器,在下拉列表中选择分词操作-article,然后选择Analysis,输入想要进行分词的文本,在Analyse Fieldname / FieldType处选择_text_,点击Analyse Values,会出现分词的结果。可以看到几乎和没分一样。这是因为我们没有安装合适的中文词库。

image-20211012153143944

一、下载安装中文分词词库

​ 下载地址:https://search.maven.org/search?q=com.github.magese

image-20211012153406524下载为jar包形式,并且将下载好的jar包放入solr目录下的**\server\solr-webapp\webapp\WEB-INF\lib**

image-20211012153621987

二、修改配置

修改**/server/solr/articles/managed-schema**文件,在文件末尾</schema>之前添加以下代码:

<fieldType name="text_ik" 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>

修改文件后重启solr服务

solr.cmd stop -all
solr.cmd start
# linux 操作
solr restart -all -force

重启后将Analyse Fieldname / FieldType内容选择为我们自定义的 text_ik 进行分词

image-20211012154912640

三、测试使用分词器查询数据

  • 需要将要分词的字段内容的type改为text_ik

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="article_name" type="text_ik" indexed="true" stored="true"/>
    <field name="article_abstract" type="text_ik" indexed="true" stored="true"/>
    
  • 如果没有修改直接运行solr默认执行的是text_general,需要删除solr中导入的数据,修改字段type属性后再次导入

    删除导入的数据:

    image-20211012171130883

    删除成功,如图:

    image-20211012171211511

再次导入,导入后测试分词查询结果。

  • 测试查询

image-20211012172004015

四、查询参数

参数名描述示例
q主要查询参数,以冒号分割,左边是字段名,右边是值,查询全部则为*😗age:20
fq过滤查询参数,可添加多个,格式与q一致name:韩
sort排序方式,字段与排序中间以空格隔开,多个以都逗号分隔,排序值为desc或ascid desc,name asc
start起始位置,默认为01
rows获取记录数,默认为10条100
fl返回指定的字段,多个以逗号分隔id,name
df默认的查询字段,设置后q与fq可以只输入值
wt返回结果的形式,支持json、xml、python、ruby等json
indent off返回结果是否缩进,默认缩进,选择则为不缩进
debugQuery返回结果是否显示debug信息
hl开启高亮显示
hl.fl要高亮显示的域
hl.simple.pre高亮显示的前缀
hl.simple.post高亮显示的后缀
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值