作者:杰仔 | 来源:互联网 | 2023-05-19 04:28
主要记录一下以mysql数据库为数据源的Solr平台的搭建过程,既为需要的同志提供点参考,也以防以后自己会需要。平台为Centos6.5,需建立好Java环境,Solr为目前最新的5.4
主要记录一下以mysql数据库为数据源的Solr平台的搭建过程,既为需要的同志提供点参考,也以防以后自己会需要。平台为Centos 6.5,需建立好Java环境,Solr为目前最新的5.4.0。
首先,从Solr官网下载文件,并解压到安装目录。实际上此时已经可以启动和进行访问了,具体过程如下:cd到安装目录,用命令 bin/solr start 启动服务器,然后在浏览器输入地址:localhost:8983/solr 就可以进行访问了,如果是远程访问则把localhost改成相应的ip地址即可。
下面介绍如何建立自己的Core:
首先,在安装目录下的server/solr/目录建立一个文件夹,文件夹名字与建立的core名字相同,比如我是对YahooAnswers的数据进行处理,core和文件夹都命名为YahooAnswers。YahooAnswers目录下建立两个文件夹,分别为conf和data,其中conf文件夹主要放配置文件,data文件夹放置生成的索引数据和log文件等。
conf文件夹下面主要由三个文件,分别为data-config.xml、schema.xml和solrconfig.xml,还有一些其他需要用到的文件,如stopwords.txt等。这三个文件都可以从其他地方拷贝过来再进行修改。以下给出我的配置文件。
第一个是solrconfig.xml:
4.9
${solr.core0.data.dir:}
${solr.core0.data.dir:}
true
solrpingquery
all
data-config.xml
solr
这个文件好像一般不需要怎么修改,不过需要指定一个使用的jar包的目录,如这里的是,一般指定为dist目录,其中有导入数据所需要的DataImportHandler的包等。不同版本的目录结构可能不太一样,需要根据实际情况进行设置。
第二个是data-config.xml:
其中,url里的localhost可以改为远程的ip地址,yahoo!answer为mysql数据库的名字,user和password需要改成相应的用户名和密码,query为mysql查询语句,里面的字段会自动对应到field的相应字段,不过好像solr必须要有一个id字段,这里把uri字段匹配到id字段。
第三个是schema.xml,这个主要是对索引的方式进行配置:
1.2
0.75
id
answer_item
其中fieldType字段对field类型进行定义,里面可以自定义各个field类型的过滤方式,检索时候的相似性计算方法等,如果需要使用可以参考example中的例子。这里主要修改的是field字段,field字段对应于data-config.xml里的数据,对每个数据进行参数设置,type为上面fieldType中定义的类型,indexed设置是否进行索引,其他类似。其中_version_字段是用来记录系统信息的,不能缺少,最好也不要进行修改。uniqueKey类似于Mysql的主键,指定一个唯一的字段,一般为id字段。defaultSearchField为默认搜索字段,当在solr搜索时不指定,则搜索的为这个这个字段。
另外,因为需要对mysql进行操作,要下载jdbc的jar包,我下载的是mysq-connector-java5.1.35-bin.jar,放到安装目录的server/solr-webapp/webapp/WEB-INF/lib/文件夹下。
至此,solr的配置基本就完成了,用bin/solr restart命令对solr进行重启,然后就可以在浏览器中进行访问了,如上文所述,地址为localhost:8983/solr。下面通过浏览器面板进行数据导入。
点击solr admin,然后点击中间的Add Core,输入core的相关信息,其中name和instanceDir都与之前建立的文件夹名字相同,其他的不用修改。点击Add Core,一个新的core就建立好了。
在左边的core selector里选择刚刚新建的core,点击下面的DataImport选项,然后在entity里选择data-config.xml里定义的entity,其他的不需要修改。点击Execute执行,如果数据比较多,可能需要的时间会稍长,右边可以查看当前状态。可以勾选下面的Auto-Refresh Status自动更新状态,也可以点Refresh手动查看。等待执行过程完成,索引就建好了。
最后,点击左边的Query选项就可以进行检索了。其中“q”下面的框为查询语句输入框,如我想查询subject字段包含“what”的数据,在查询框输入“subject:what",然后点击下面的Execute Query执行搜索,右边就会显示查询结果。