Solr8.5.2手摸手教学

该环境搭建基于win10、JDK1.8、Mysql5.7

准备

  1. 本地电脑暗转JDK1.8或以上
  2. 下载Solr8.5.2 zip压缩包
  3. Mysql5.7

创建core

根据我的理解,一个solr服务是可以创建多个core,这里的每个core对对应一个服务,首先我们进入到解压后的根目录下,键入以下命令

// 进入根目录下的bin文件夹
cd bin
// 启动solr服务
.\solr start

此时solr服务成功启动,solr服务默认占用的端口为8983,在浏览器中访问:
在这里插入图片描述
在浏览器中看到该页面,标识solr服务已成功启动,接下来开始配置core,继续回到命令行,键入以下命令:

// projectname 标识你想要创建的core的名称
.\solr create -c projectname

在CoreAdmin菜单中查看core是否创建成功,页面显示如下则表示创建成功:
在这里插入图片描述

添加配置

在下载下来的压缩包中有 solr-8.5.2\example\example-DIH\ 文件夹,我们可以参考该示例,首先将 solr-8.5.2\example\example-DIH\solr\conf\ 文件夹下的 solr-data-config.xml 文件拷贝到 solr-8.5.2\server\solr\projectname\conf\ 文件夹下,由于我使用的是Mysql,这里需要添加Mysql java 驱动,用于solr连接Mysql数据库,下载完成后将驱动拷贝到 solr-8.5.2\dist\ 目录下,此外还需要在 solr-8.5.2\server\solr\projectname\conf\ 文件夹的 solrconfig.xml 文件中配置 jar 包地址,具体配置如下:

// 将数据库中的数据导入到solr当中需要使用到此依赖
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
// solr连接mysql数据库需要使用到数据库驱动依赖
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" />

在上面我们拷贝了 solr-data-config.xml 文件,该文件为数据库连接配置文件,需要在 solrconfig.xml 文件中声明引用,具体配置代码如下

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

在 solr-data-config.xml 文件中配置数据库连接数据,具体配置如下:

<dataConfig>
    <dataSource driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3308/dbname?serverTimezone=UTC&amp;tinyInt1isBit=false" user="user" password="password" />
    <document>
        <entity name="question" pk="questionid" query="SELECT a.questionid as id, a.title, a.description, a.author, b.username as authorname from t_question a left join t_user b on a.author = b.userid">
            <field column="questionid" name="id" />
            <field column="title" name="title" />
            <field column="description" name="description" />
            <field column="author" name="author" />
            <field column="authorname" name="authorname" />
            <entity name="tag" query="select ciqt.tagname, ciqt.tagid, ciqt.tagicon from ck_question_tag a left join t_question_tag ciqt on a.tagid = ciqt.tagid where a.questionid = '${question.id}'">
                <field column="tagname" name="tagname" />
                <field column="tagid" name="tagid" />
                <field column="tagicon" name="tagicon" />
            </entity>
        </entity>
    </document>
</dataConfig>

修改完成后需要在 solr-8.5.2\server\solr\projectname\ 文件夹下的 managed-schema 文件中添加如下配置 :

   <field name="title" type="string" indexed="true" stored="true" /> 
   <field name="description" type="string" indexed="true" stored="true" /> 
   <field name="author" type="string" indexed="true" stored="true" />
   <field name="authorname" type="string" indexed="true" stored="true" />
   <field name="tagname" type="string" indexed="true" stored="true" multiValued="true" />
   <field name="tagid" type="pint" indexed="true" stored="true" multiValued="true" />
   <field name="tagicon" type="string" indexed="true" stored="true" multiValued="true" />
   <uniqueKey>id</uniqueKey>

以上基本完成了数据库连接及mysql数据到solr的配置,完成以上配置后在浏览器中验证是否可将mysql中数据到solr当中,成功导入效果如下:
在这里插入图片描述

配置中文分词

中文分词采用 ik-analyzer-solr 方案,具体操作如下:

  1. jar包放入Solr服务的Jetty或Tomcat的webapp/WEB-INF/lib/目录下;
  2. 将resources目录下的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/(如果没有classes文件则需要手动创建)目录下;
    • IKAnalyzer.cfg.xml
    • ext.dic
    • stopword.dic
    • ik.conf
    • dynamicdic.txt
  3. 配置Solr的managed-schema,添加ik分词器,示例如下;
<!-- ik分词器 -->
<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>

修改之前配置的 managed-schema 文件,修改为如下内容:

   <field name="title" type="string" indexed="true" stored="true" /> 
   <field name="description" type="text_ik" indexed="true" stored="true" /> 
   <field name="author" type="string" indexed="true" stored="true" />
   <field name="authorname" type="string" indexed="true" stored="true" />
   <field name="tagname" type="string" indexed="true" stored="true" multiValued="true" />
   <field name="tagid" type="pint" indexed="true" stored="true" multiValued="true" />
   <field name="tagicon" type="string" indexed="true" stored="true" multiValued="true" />
   <uniqueKey>id</uniqueKey>

验证中文分词器是否配置成功,配置成功则应如图所示:
在这里插入图片描述

配置solr登录账号

  1. 在 solr-8.5.2\server\etc\ 文件夹下创建 verify.properties 文件,用于配置 solr 登录账号及密码,文件内容如下:
    在这里插入图片描述
  2. 修改 solr-8.5.2\server\contexts\ 文件夹下 solr-jetty-context.xml 文件,在文件中添加以下内容:
  <Get name="securityHandler">    
         <Set name="loginService">    
                 <New class="org.eclipse.jetty.security.HashLoginService">    
                        <Set name="name">verify—name</Set> 
                        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/verify.properties</Set>    
                 </New>    
         </Set>    
  </Get>
  1. 修改 solr-8.5.2\server\solr-webapp\webapp\WEB_INF\ 文件夹下 web.xml 文件,具体修改内容如下:
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>verify-name</realm-name>
  </login-config>

再次访问若配置成功,则弹出如下提示框,要求输入账号密码:
在这里插入图片描述

tips

  1. 在生产环境部署时,由于我的服务器内存比较小,所以可以指定限制solr使用内存的大小,但是如果配置的过小,可能会导致服务无法启动。
  2. 绝大多数问题可以通过查看日志解决,日志目录为 solr-8.5.2\server\logs 查看 solr.log 文件。

文中所涉及的配置已上传,可在此地址进行下载

最后安利下自己的小程序,一款程序员刷题小程序。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎 课程特点毕业后接触的第一个中间件就是Solr,在工作中用处广泛,为了便于大家快速掌握该技能,开始录制相关课程,该专栏特点如下:1.采用Solr最新版本视频录制,全网最新课程(Solr8.1于2019年5月16日发布)2.技能点全网最全,会结合工作经验,项目中用到的技能点都会有所涉及,更新章节比较全面3.适用范围广,从零基础到高级架构以及分布式集群都涵盖,适用初级、高级、项目实战等多个层次开发者4.多种维度辅助学习,采用独立solr粉丝群辅助教学,学员问题会及时得到解决,程序员突破圈 打卡制度,督促学员学习关注后再购买、 关注后再购买、 关注后再购买课程能得到什么1.快速学习到最新版本的全文检索技术,从视频、文章、圈子、粉丝交流等快速促进学习2.通过该技术,获得面试进阶指导3.结交人脉(庞大的粉丝群)..End初期学员100人,价格不会太高,也是为了帮助更多的开发者但是个人精力有限,所以限制条件如下1.求知欲强,有想向技术更深一层了解的2.乐于交流,喜欢探讨技术者3.学习惰性者慎入,购买后会督促大家学习,购买不是目的,学习到该技能才是该专栏的主要目的正式进入学习状态了吗,专栏群见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值