使用solr搭建自己的搜索引擎

无简介

(转)Python 爬虫进阶三之 Scrapy 框架安装配置 一个简单的爬虫—电影天堂爬虫 从这两篇文章开始,我其实只是想要练习一下python,写爬虫玩玩,想着下电影时候直接一搜,就直接有下载地址了,后来爬了一些数据之后发现,数据库中使用Like搜索的时候那个搜索的速度真是惨不忍睹不忍直视啊,有时候4、5秒都出不来结果,还以为网页代码挂了呢,后来为搜索的字段添加了索引也不行,还是比较慢,于是只能使用自建搜索引擎了 一开始考虑的搜索引擎其实还有其他的,但是因为我阿里云的服务器是windows的,并且我对java比较熟,同时solr可以方便的导入mysql的数据,最后选择了solr来作为我尝试的第一个搜索引擎。

安装与部署

参考这篇文章:window环境下将solr6.3部署到tomcat中或者查看截图 solrinstallscreenshot 其实还是遇到了一些奇奇怪怪的问题的,但是因为我服务器是windows server 2008,对各位看官不具有普适性,就不说了。这里遇到问题,拿现象去google就好了,还是挺容易配置好的 完成这步之后,你打开http://127.0.0.1:8080/solr/index.html这个地址应该可以看到solr的界面了

导入MySql数据

我导入的时候主要是参考了这篇博文,但是在参考他的过程中发现有些东西对我的服务器不是很适应,所以做了修改,到时候我会注明的。

步骤1:

在webapps中solrhome下新建一个文件夹名字叫做mynode(名字不固定,可以随便取,但是这个名字在后面的配置中会有所关联。)然后在mynode文件下新建一个名字叫做conf的文件夹(这个文件名字最后不要改。)然后把官网下下来的solr项目中solr-6.0.0\server\solr\configsets\data_driven_schema_configs\conf下的所有东西复制到conf中去。(注意不要复制错!)最后把solr-6.0\solr-6.0.0\example\example-DIH\solr\db\conf下的admin-extra.html, admin-extra.menu-bottom.html ,admin-extra.menu-top.html三个文件也复制到conf中去。

步骤2:

把mysql所需的jar包和solr-6.0\solr-6.0.0\dist下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar都复制到项目WEB-INF\lib下。然后在solrconfig.xml文件中加入(就是把WEB-INF\lib里面的jar包配置到项目中,我这里用的是绝对地址。这段代码大约在solrconfig.xml的70多行处,前面有一堆类似的代码。) 步骤3: 在MYSQL中新建一张表。我这里用的是Navicat管理工具进行创建的。这里的表名是goods。字段如下图所示: 步骤4: 在solrconfig.xml的  之上添加

      data-config.xml      

然后在conf下新建data-config.xml文件。里面内容如下:

                 

在这里我去掉了deltaQuery,所以不能增量添加了 dataSource是数据库数据源(也就是数据库名称),entity中的name是表名,剩下的都是一些字段名

说明: 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和最近一次索引的时间。 最后在conf文件下的managed-schema配置field信息:

这里的每一行都代表一个字段

其中id,name,number,updateTime是上面提到的数据库字段。下面三个field是系统本身的不能删除,否则会运行错误。 步骤5:   启动tomcat,并在URL中输入http://127.0.0.1:8080/solr/index.html路径。选择Core admin 输入如下设置: 设置好之后,点击Add Core按钮,进行设置,设置成功后,再core Selector选择刚刚添加的core。

如果Add Core的时候出错,那么首先要检查里面填写的文件的名称在文件夹中是否存在,如果检查了都存在而且内容也正确,那么就换另一种办法,使用命令行来创建 首先找到solr的bin目录,cmd中cd到这个目录

solr create -c xxx -p 8080

用这个命令在创建一个新的solr项目,其中xxx是创建的名称,-p后面是端口 这个时候要把tomcat中对solr的账号密码控制给去掉,参考:点击打开,删除第一步的内容即可(如果没有账号密码可以忽略)

选择刚刚添加的goods实体进行索引操作:我们这儿可以选择full-import或者delta-import(增量索引),选择增量索引需要把clean的勾给去掉,不然会清除之前的,增量的索引的初衷是对新增或者修改的记录重新索引,会追加到原有的索引文件当中。当我们选择full-import的时候,最好就是把原有的索引文件给清空重新索引。 索引成功如下如所示: 使用query进行测试,输入sa查出了sa 数据库中的数据如下图所示:

其他

我总结了一下,其实只要修改其中的三个文件就可以创建一个新的solr项目了 这三个文件分别是:data-config.xml、managed-schema、solrconfig.xml data-config.xml这个文件用来告诉solr我的数据从哪里来,所以配置的是数据库的东西 managed-schema这个文件用来配置字段,告诉solr要导入那些字段,字段的type分别是什么,如: solrconfig.xml这个文件用来配置这个

data-config.xml

告诉solr用哪个文件来作为配置项 所以如果一个可以用之后,只要复制这个项目,将这个三个文件根据对应的数据库进行修改之后,即可成为另外一个项目使用 在复制之后,需要删除data\index下面的所有文件,这个文件夹里面是所有文件,要删除之后重新生成 我把我配置好的打包了一个: moviedata 配置了之后记得修改那三个文件就好,对了如果要改名字记得改文件夹和core.properties中的

-------------本文结束  感谢您的阅读-------------
下次一定