Solr搜索引擎集成

介绍Solr之前,就不得不提业界大名鼎鼎的Lucene。
Lucene是一个完全用Java编写的高性能、跨平台的全文搜索引擎工具包,能满足几乎所有软件项目的搜索需求。Lucene是Apache基金会的*开源项目,官网:https://lucene.apache.org/,使用Lucene的方式主要有二种:一是自己编写程序,调用类库(创建索引、修改、删除、查询等);二是使用第三方基于Lucene编写的程序,如Solr等。
Solr是基于Lucene的企业级搜索引擎,是对Lucene的封装和扩展,是一个war包,需要基于Tomcat等web容器运行。Solr使项目更容易集成和开发搜索功能。
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中。