solr6.x在tomcat8中的部署

solr6.x 在 tomcat8 中的部署(入门级)

公司最近的项目希望引入全文索引功能,推荐用solr,于是我就上网自己搜了一些资料,发现很多博客写的五花八门,良莠不齐,踩过不少坑= =!于是想写一篇solr在tomcat下部署的文章,以期能对网友提供帮助。【本文只介绍单机tomcat部署】

1. 通俗点说solr

  • solr是一个基于Apache Lucene的全文搜索服务器,可以通过Http或者 WebService访问它
  • solr可以配置数据库连接,它能根据solr相关配置文件,拿到指定的数据库表中指定字段的数据,并且生成全文索引,以供调用
  • 也就是说,使用方面,solr类似redis,为我们自己的application提供服务,只需要配置它,启动它,调用它
  • solr-6.x 和solr-5.x有些不一样,本文只适用于solr-6.x

2. 如何在tomcat下部署

  • 下载solr-6.5.1:solr–6.5.1下载
  • 下载tomcat-8.5.27:tomcat所有版本下载,自己根据url选择
  • 随便找个地方新建一个文件夹,命名为:solr-tomcat-8.5.27 【自定义即可】
  • 将上述两个下载的文件,拷贝进去,分别解压
  • solr-tomcat-8.5.27下新建文件夹:solr-home
  • solr-tomcat-8.5.27\solr-6.5.1\server\solr下的README.txt,solr.xml,zoo.cfg三个文件拷贝到solr-home
  • solr-tomcat-8.5.27\apache-tomcat-8.5.27\webapps目录下,新建一个空文件夹:solr;将solr-tomcat8\solr-6.5.1\server\solr-webapp\webapp下的所有文件,拷贝到刚刚新建的solr文件夹中
  • solr-tomcat-8.5.27\apache-tomcat-8.5.27\webapps\solr\WEB-INF文件夹中,新建一个文件夹:classes,将solr-tomcat8\solr-6.5.1\server\resources\log4j.properties拷贝到刚刚的classes
  • 将以下jar包拷贝到solr-tomcat8\apache-tomcat-8.5.27\webapps\solr\WEB-INF\lib下:
    • solr-tomcat-8.5.27\solr-6.5.1\server\lib\ext\下:【5个jar:所有的】
    • solr-tomcat-8.5.27\solr-6.5.1\dist\下:【2个jar:solr-dataimporthandler-6.5.1.jar,solr-dataimporthandler-extras-6.5.1.jar】
    • solr-tomcat-8.5.27\solr-6.5.1\server\lib\下:【5个jar:以metrics开头的jar】
    • 连接mysql的一个jarmaven repository下载
    • 一个中文分词的jar别人上传的资源:IKAnalyzer6.5.0.jar下载
  • 修改solr-tomcat8\apache-tomcat-8.5.27\webapps\solr\WEB-INF\web.xml
    • <filter></filter>标签前面加入:【其中env-entry-value为solr-home的绝对路径】
      <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>G:\tomcat\solr-tomcat8\solr-home</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
      </env-entry>

      【如果不做这一步会报错无JNDI连接】
    • 注释掉最后的<security-constraint></security-constraint>
      【如果不做这一步浏览器访问会报错403】
  • 访问http://localhost:8080/solr/index.html,能够看到solr控制面板,表示配置成功

3. solr简单操作介绍

  • 新建core
    • 在solr-home目录下,新建一个文件夹article【名字任意】
    • solr-tomcat8\solr-6.5.1\server\solr\configsets\basic_configs\下面的conf文件夹,拷贝到solr-tomcat8\solr-home\article
    • 在浏览器中的solr控制台,新建core,如下图:这里写图片描述
    • 会看到新建成功了,一定要按照顺序来
  • 配置core

    • solr-tomcat8\solr-home\article\conf中新建文件:data-config.xml,将下列配置粘贴进去:
      <?xml version="1.0" encoding="UTF-8"?>
      <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" 
          url="jdbc:mysql://127.0.0.1:3306/hxyframe" user="root" password="root" batchSize="-1"/>
      <document>
          <entity name="solr_article" query="select id,title,author,img,content,create_time,update_time from solr_article">
              <field column="id" name="id" />
              <field column="title" name="title" />
              <field column="img" name="img" />
              <field column="author" name="author" />
              <field column="content" name="content" />
              <field column="create_time" name="createTime" />
              <field column="update_time" name="updateTime" />
          </entity>
      </document>
      </dataConfig>
      

    【说明:】dataSource 中的url属性,不支持加?useUnicode=true&characterEncoding=utf-8&autoReconnect=true;entity name是你的数据库表名,query是你想生成索引的数据范围,field 中的colnum为数据库表字段名,name为managed-schema文件中的field name;【本xml文件中不能有中文注释,切记】

    • 修改同目录下的solrconfig.xml文件,在最后的</config>前加入下面代码
      xml
      <!--引入DataImportHandler类的jar-->
      <lib dir="../../../solr-6.5.1/dist/" regex="solr-dataimporthandler-.*\.jar" />
      <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
      <lst name="defaults">
      <str name="config">data-config.xml</str>
      </lst>
      </requestHandler>
    • 修改同目录下managed-schema文件,加入下列代码

      <fieldType name="text_ik" class="solr.TextField">   
          <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
          <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
      </fieldType>
      <field name="type" type="string" indexed="true" stored="true"/>
      <field name="img" type="string" indexed="true" stored="true"/>
      <field name="title" type="text_ik" multiValued="false" indexed="true" stored="true"/>
      <field name="author" type="text_ik" multiValued="false" indexed="true" stored="true"/>
      <field name="content" type="text_ik" indexed="true" stored="true"/>
      <field name="createTime" type="tdate" indexed="true" stored="true"/>
      <field name="updateTime" type="tdate" indexed="true" stored="true"/>
      
      <field name="keyWord" type="text_ik" multiValued="true" indexed="true" stored="true"/>
      <copyField source="title" dest="keyWord"/>
      <copyField source="author" dest="keyWord"/>
      <copyField source="content"  dest="keyWord"/>

      【说明:】copyField 可以用来做组合索引,例中,将title,content,author建成组合索引keyWord,意思就是当使用keyWord查询时,会从上述3个字段中查找匹配的数据

  • 将配置好的数据源里面的数据,生成全文索引
    • 操作如下图:这里写图片描述
  • solr query
    • 操作如下图:这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值