Windows环境solr7.3.1部署在tomcat+连接sql数据库

经过一天的挣扎,阅览无数帖子,历经九九八十一难,走过一个又一个坑,终于是完成了配置,下面就跟大家分享一下我的成果,不足之处还请大手指出

       Solr是一个独立的企业级搜索应用服务器,它对外提供API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引(solr生成倒排索引,数据库生成的索引是二叉树索引,效率差距很大);也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。Solr是一个类似于Google或者Bing的全文检索引擎, Solr是与搜索引擎优化(SEO)相关联的。很多公司也使用elasticsearch作为搜索引擎。

一、solr安装

准备工作:    solr(7.3.1)        tomcat(8.0.5)

1.解压solr和tomcat

2.将 solr 压缩包中 solr-7.3.1\server\solr-webapp\文件夹下有个webapp文件夹,将之复制到Tomcat\webapps\目录下,文件夹名改成solr ;

3.solr-7.3.1/server/lib/ext目录下的所有jar包、和solr-7.3.1/dist下的solr-dataimporthandler-7.3.1.jar、solr-dataimporthandler-extras-7.3.1.jar复制粘贴到tomcat下的solr项目的WEB-INF/lib目录下;

4.solr-7.3.1\server\lib下metrics开头的5个jar包粘贴到tomcat\webapps\solr\WEB-INF\lib下

5.tomcat下的solr项目的WEB-INF下新建classes文件夹,然后把solr-7.3.1/server/resources下的log4j.properties粘贴过去;

6.将solr-7.3.1/server/solr 下所有文件复制到计算机某个目录下,如D:\zk\solr_home(solr创建的core到时会存放在该目录下);

7.打开Tomcat/webapps/solr/WEB-INF下的web.xml,找到如下配置内容(初始状态下该内容是被注释掉的):

<env-entry>

    <env-entry-name>solr/home</env-entry-name>

    <env-entry-value>D:/zk/solr_home</env-entry-value>

    <env-entry-type>java.lang.String</env-entry-type>

</env-entry>

将 env-entry-value 中的内容改成你的solr_home路径

然后翻到最下面,将如下内容注释掉

<!-- 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>-->

8.保存关闭,而后启动tomcat,在浏览器输入http://localhost:8080/solr/index.html即可出现Solr的管理界面,如下: 


看到上面页面,证明tomcat下部署solr已经成功

二、创建core

1.在D:\zk\solr_home下创建my_core文件夹(名称与下图的instanceDir一致,建议下图中的name也和该文件夹名一致);

2. 在my_core文件夹下创建data和conf文件夹; 

3.将solr-7.3.1\example\example-DIH\solr\solr\conf里所有文件和文件夹都copy到D:\zk\solr_home\my_core\conf下; 

4.重启tomcat,访问http://localhost:8080/solr/index.html


Add Core,在“Core Selector”这里可以查询和编辑你的solr相关信息;

三、solr分词

下载solr7.3.1专用的IK Analyzer的jar包和相应的配置文件,IK-Analyzer的jar包和相应的配置文件下载地址:https://download.csdn.net/download/apm800/10432956

1.将解压后的三个jar包复制到tomcat\webapps\solr\WEB-INF\lib下;

2.在 D:\zk\solr_home 目录下新建一个 dic 文件夹 , 把mmseg4j 压缩包里(data文件夹下)复制到 dic 目录下;

3.将D:\zk\solr_home\my_core\conf 下的managed-schema文件复制一份,改名为schema.xml,连接数据库的时候会用到;然后将如下配置复制到managed-schema配置文件的最下边,在结束标签</schema>之上

    <fieldType name="text_ik" class="solr.TextField">  
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>  
    </fieldType>  
    <field name="text_ik"  type="text_ik" indexed="true"  stored="true"  multiValued="false" />

4.重启Tomcat,打开solr项目主页进行测试。测试结果如下:



四、连接数据库

1.将maven仓库里mysql 相关jar包 D:\APP\apache-maven-3.5.2\repository\mysql\mysql-connector-java\5.1.38里的

mysql-connector-java-5.1.38.jar 放在tomcat\webapps\solr\WEB-INF\lib下

2.在MySql数据库中新建一张表,我的表名是student,字段如下图所示:


3.在solr-home\my_core\conf下的solrconfig.xml文件的  692行<requestHandlername="/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>

4.在solr_home\my_core\conf下新建data-config.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/
test" user="root" password="root" batchSize="-1" />
  <document>
        <entity name="student" pk="id"  dataSource="source1" 
                query="select * from  student"
deltaImportQuery="select * from student where id='${dih.delta.id}'"
                deltaQuery="select id from student where updateTime> '${dataimporter.last_index_time}'">
         <field column="id" name="id"/>
   
<field column="name" name="name"/>
<field column="sex" name="sex"/>
<field column="birth" name="birth"/>
<field column="department" name="department"/>
<field column="address" name="address"/>
     </entity>
  </document>

</dataConfig>

说明:

  dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,goods是表名。

  其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。

重启tomcat,访问http://localhost:8080/solr/index.html#/


  成功后会看见如下效果,查询出来的数据为你数据库里有的内容






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值