日期:2014-05-16 浏览次数:20572 次
最近在做地名搜索定位的项目,相当于对经过地理编码的数据进行搜索
主要是将数据库中的数据导入到solr中并发布出来,数据量目前是1500万条左右
记录一下大概的工作步骤
1 基本部署
目前solr最高版本为4.0
由于项目服务器使用JDK1.5, 在本例中使用3.6.1版本, 服务器使用TomCat 及Weblogic
下载并解压apache-solr-3.6.1.zip,
将文件dist\apache-solr-3.6.1.war改为zip后缀并解压
解压出来的文件放到 tomcat\webapps\solr\
注意:如果要部署到weblogic中,建议先修改apache-solr-3.6.1.zip中的META-INF\MANIFEST.MF中的
Implementation-Version值,去掉其中的冒号,以免weblogic自动识别版本号时出现非法字符导致部署失败
新建一个文件夹目录,以保存solr索引文件,比如:D:\Solr_Home\solr
在此目录下新建两个目录,lib, cores
将apache-solr-3.6.1.zip中的dist文件夹下所有文件及文件夹复制到lib目录下
将apache-solr-3.6.1.zip中的示例项目文件夹example\example-DIH\solr\db复制到cores目录下
打开db\conf\solrconfig.xml,找到apache-solr-dataimporthandler的lib配置段
修改其lib位置如下:
<lib dir="../../lib/" regex="apache-solr-dataimporthandler-.*\.jar" />
<cores adminPath="/admin/cores"> <core instanceDir="/cores/db" name="db"/> </cores>
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>E:/solr_home/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
<dataConfig> <dataSource driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:testoracle" user="test" password="test" batch-size="-1"/> <document> <entity name="user" query="select name,x,y from Address"> <field column="x" name="x" /> <field column="name" name="name" /> <field name="y" column="y" /> </entity> </document> </dataConfig>
<field name="name" type="text" indexed="true" stored="true"/> <field name="x" type="string" indexed="true" stored="true"/> <field name="y" type="string" indexed="true" stored="true"/>
<uniqueKey>name</uniqueKey> <defaultSearchField>name</defaultSearchField>
可通过地址查看导入过程:
localhost:8080/solr/db/dataimport
导入完成后可打开localhost:8080/solr/db/admin,在此页面中进行查询
注意,若查询中文,可能会遇到乱码或无法查询的情况,
对于tomcat需要修改tomcat\conf\server.xml中的connector段
加入URIEncoding="UTF-8",如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /