本文为博主研究的记录,如有不对,敬请指出。如有问题,欢迎交流。在下在此拜谢了!
一、基本概念
1.Solr是基于Luence的基础上,制作的企业级搜索服务器,因为其可视化界面和便捷的操作,很多人开始使用。因为solr和Luence现在都是由Apache公司的一个项目组进行开发,所以solr/Luence有时候指的是一个东西。
2.核心源,solr的搜索的文件存储位置,博主感觉可以认为是一个项目。
二、使用部署(本次讲解以7.5为例)
1.在官网上下载相关文件,解压之后如下图
2.bin文件夹下面,打开命令窗口,使用solr start启动,成功后可以访问localhost:8983访问页面
3.创建核心源,可以在控制台页面的core admin中add核心源(不推荐,因为博主每次创建的时候,都会包solrconfig.xml缺失);可以在bin文件下的命令窗口中使用 solr create -c (核心源名称)来创建,例如
这样在重启solr后,就可以在控制台中看到核心源了
4.solr部署算是完毕,之后就可以用自己需要的方式向核心源中导入数据了
三、连接数据库
1.如果想要导入数据库,需要将相应的数据库驱动的jar包导入到server\solr-webapp\webapp\WEB-INF\lib下
2.在server\solr下找到自己的核心源的文件夹,打开conf文件夹,我们需要配置solrconfig.xml,managed-schema以及增加一个数据库配置文件。
3.配置solrconfig.xml。
(1)数据库solr的jar包引入,找到对应配置位置加入如下配置
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
(2)增加数据库配置xml文件,找到/select的requestHandler,在上面加入,其中config里面为之后增加的数据库配置文件名字
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">datajdbc.xml</str>
</lst>
</requestHandler>
3. 在conf文件夹下,新增配置数据库的xml文件,dataSource中配置数据库数据,type为类型,driver为对应数据库的驱动类,url为数据库地址,user为数据库账户,password为数据库密码。entity为需要的查询数据库语句,图中为查询表wiki_edition里面的数据,下面的field为查出的数据需要向solr中存储的字段已经对应存入到solr中的字段名称。
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.163.133:3306/careswiki"
user="root"
password="root" />
<document>
<entity name="edititon" query="select eid,summary,author,title,content from wiki_edition">
<field column="eid" name="eid" />
<field column="summary" name="summary" />
<field column="author" name="author" />
<field column="title" name="title" />
<field column="content" name="content" />
</entity>
</document>
</dataConfig>
4.配置managed-schema。这个文件是对应第三步里面的xml来配置的。找到default-config,里面增加第三步查询里面的字段的对应解析配置,如图
<field name="eid" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="summary" type="strings" indexed="true" stored="true"/>
<field name="author" type="strings" indexed="true" stored="true"/>
<field name="title" type="strings" indexed="true" stored="true"/>
<field name="content" type="strings" indexed="true" stored="true"/>