Solr是基于Lucene的全文搜索服务器, 它是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
本文档介绍将Solr4.2.0部署到Tomcat6并连接数据库获取数据的方法。
一、 Solr部署
1. 下载Solr后并将其解压,为说明方便,Solr解压之后的目录在本文档中称为SOLRDISTDIR。
2. 部署Solr的war包
拷贝文件SOLRDISTDIR\dist\solr-4.2.0.war至CALALINEHOME\webapps之中。
注:CALALINEHOME为Tomcat的主目录。
3. 部署Solr的工作目录
拷贝目录SOLRDISTDIR\example\solr至拟定的Solr工作目录。例如可以将其也拷入CALALINEHOME\webapps之中。拷贝完成的工作目录在本文档中称为SOLRWORK。
Solr工作目录确定后,需要在Solr服务器的配置中进行指定。启动Tomcat,在solr-4.2.0.war被自动解开部署后,打开CALALINEHOME\webapps\solr-4.2.0\WEB-INF\web.xml文件,并修改值为solr/home的env-entry-name节点对应的env-entry-value。env-entry-value值需要被指定为Solr的工作目录,即SOLRWORK。
例如针对前述工作目录,web.xml应做如下修改:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/apache-tomcat-6.0.35/webapps/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
重新启动Tomcat后,Solr已功部署,在浏览器中打开http://IP:8080/solr-4.2.0,可以看到Solr已经启动。
二、 Solr连接数据库
1. 修改solrconfig.xml配置
solrconfig.xml文件位于SOLRWORK\collection1\conf之下,为了连接数据库,需要在其中增加以下配置:
<config>
…...
<requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">
<lstname = "defaults">
<str name ="config">data-config.xml</str>
</lst>
</requestHandler>
……
</config>
2. 增加数据库配置文件
在上述对solrconfig.xml配置的修改中,指定了通过文件data-config.xml配置数据库相关信息,因此需要在SOLRWORK\collection1\conf之下创建一个名为data-config.xml的配置文件,其具体内容类似如下:
<?xmlversion="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSourcetype="JdbcDataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://10.10.108.243:1433;DatabaseName=lessonsys"
user="pms"
password="pms"/>
<document name="expert">
<entity name="expert"
query="SELECT id, a, b, c fromtableA"
deltaImportQuery=" SELECT id,a, b, c from tableA WHERE id='${dataimporter.delta.id}'"
deltaQuery="select id from tableA where modifyDate >'${dataimporter.last_index_time}'"
>
<field column="id"name="id"/>
<field column="a"name="a/>
<field column="b"name="b"/>
<field column="c"name="c"/>
</entity>
</document>
</dataConfig>
3. 修改schema.xml配置
Solr要正常从数据库中获得数据还需要修改SOLRWORK\collection1\conf\schema.xml文件,主要是将我们期望能够被Solr处理的字段进行配置。例如针对以上data-config.xml中的配置,需要对应修改schema.xml如下:
<fields>
……
<field name="id" type="int"indexed="true" stored="true" required="true"multiValued="false"/>
<field name="a"type="string" indexed="true" stored="true"multiValued="true"/>
<field name="b"type="string" indexed="true" stored="true"multiValued="true"/>
<field name="c"type="string" indexed="true" stored="true"multiValued="true"/>
……
</fields>
4. 增加jar包
在上述对配置文件solrconfig.xml的修改中使用到了DataImport(org.apache.solr.handler.dataimport.DataImportHandler),因此需要导入DataImport相关的jar包。
将SOLRDISTDIR\dist\下的文件solr-dataimporthandler-4.2.0.jar及solr-dataimporthandler-extras-4.2.0.jar拷贝至CALALINEHOME\webapps\solr-4.2.0\WEB-INF\lib之下即可。
如果拷贝完成以后,系统不能正常运作,则可以尝试在solrconfig.xml中增加一条使用DataImport的lib配置项,具体修改参考如下:
<config>
……
<libdir="D:/apache-tomcat-6.0.35/webapps/solr-4.2.0/WEB-INF/lib"regex="apache-solr-dataimporthandler-\d.*\.jar" />
……
</config>
三、 Solr自动更新索引
Solr默认情况下已经配置了自动更新索引,如果确需修改,可以在配置文件solrconfig.xml中修改autoCommit的配置。
<config>
……
<updateHandlerclass="solr.DirectUpdateHandler2">
<autoCommit>
<maxTime>15000</maxTime>
<openSearcher>true</openSearcher>
</autoCommit>
</updateHandler>
……
</config>
欢迎访问梦断酒醒的博客http://www.yanzhijun.net,点击此处订阅博客更新。