Solr搜索引擎集成

介绍Solr之前,就不得不提业界大名鼎鼎的Lucene。
Lucene是一个完全用Java编写的高性能、跨平台的全文搜索引擎工具包,能满足几乎所有软件项目的搜索需求。Lucene是Apache基金会的顶级开源项目,官网:https://lucene.apache.org/,使用Lucene的方式主要有二种:一是自己编写程序,调用类库(创建索引、修改、删除、查询等);二是使用第三方基于Lucene编写的程序,如Solr等。
Solr是基于Lucene的企业级搜索引擎,是对Lucene的封装和扩展,是一个war包,需要基于Tomcat等web容器运行。Solr使项目更容易集成和开发搜索功能。
solr的工作原理示意图
在这里插入图片描述
solr配置到tomcat后
修改配置文件 Tomcat下webapps\solr\WEB-INF\web.xml,让Tomcat中的Solr引用solr/home变量对应的路径SOLR_HOME:
启动Tomcat,用浏览器访问http://localhost:端口号/solr/,
在Tomcat中安装Solr服务后,针对一个项目集成的搜索功能叫做模块(Core)。前面复制到SOLR_HOME目录下的collection1目录就是一个自带的模块。为了给爱旅行项目集成搜索功能,需要复制collection1目录,并重命名为itrip
打开itrip文件夹,修改core.properties文件,将name修改为itrip
重新启动tomcat,并访问solr,如出现以下界面,则表示新建itrip模块成功
配置导入数据
到目前为止,我们已经完成了solr的基础配置,并且创建了名为itrip的Core,接下来我们需要把MySQL数据库和搜索引擎连接起来,让Solr搜索引擎可以读取数据库的数据,并且建立自己的索引。
导入jar包
①拷贝数据库连接的 mysql-connector-java-5.1.18.jar 到Tomcat的lib目录;
②从下载的zip解压后的dist目录复制如下两个jar,到Tomcat的webapps/solr/lib目录;
数据导入处理器。
打开SOLR_HOME下的itrip\conf\solrconfig.xml文件,在requestHandler name="/select" class=“solr.SearchHandler”>前面上加上一个数据导入的处理器节点。
数据导入配置。
在itrip\conf目录下新建 data-config.xml文件,配置如下:
索引和字段展示配置。
打开itrip\conf\schema.xml文件。该文件 是solr对数据库里的数据进行索引管理和数据字段展示管理的配置文件:
执行导入
以上配置完成后,重启Tomcat,并访问solr
配置增量更新
以上的步骤我们实现了将数据库的数据导入到Solr中,但是如果MySQL数据有变化,Solr如何同步更新呢?接下来需要配置Solr的增量更新,即定时将数据库的数据导入到Solr中。
导入jar
将资料中提供的apache-solr-dataimportscheduler.src.jar包添加至Tomcat/webapps/solr/WEB-INF/lib目录下。
配置增量更新
在SOLR_HOME文件夹下新建conf文件夹,并新建名为dataimport.properties
增量更新监听器
新增增量更新数据的监听器,在solr的web.xml中加入以下监听器:


org.apache.solr.handler.dataimport.scheduler.ApplicationListener


修改导入数据的SQL
修改data-config.xml中的entity节点,增加deltaImportQuery和deltaQuery属性。deltaQuery是根据dataimport.properties配置文件中的更新时间,从数据库中查出上次导入之后的最新酒店数据,并记录其id;而deltaImportQuery的目的是将deltaQuery查询出的id的数据导入到Solr中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小民佩奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值