一、开启Solr服务
1、首先从solr官网下载solr-5.2.1.tgz包,解压之后为solr-5.2.1。
2、读取README.txt可知通过bin/solr start命令开启solr服务,当然可以将solr-5.2.1/bin加入环境变量里面。此时开启的服务是放在jetty下的服务,也可以放在Tomcat下,只是感觉那样挺麻烦,还需要再下载一个Tomcat包。
3、开启服务之后,默认是开启8983端口,此时就可以使用localhost:8983/solr/进行访问了;如果不能访问,通过java -version查看你的java版本,看是否低于java1.7,如果低于,请升级。其实,在README.txt文件里面,Instructions for Building Apache Solr from Source下面的一行,已经明确指出要下载哪些东西。
二、从Mysql数据库中导入数据
1、创建core或collection,有两种方式创建
第一种是使用命令行,查看README.txt所知道的
bin/solr create -c collection
第二种使用访问链接创建
localhost:8983/solr/admin/cores?action=CREATE&name=collection&instanceDir=collection
默认创建的目录在solr-5.2.1/server/solr下
2、修改solr-5.2.1/server/solr/collection/conf/managed-schema文件为schema.xml
前面进入conf文件夹一看,傻了,居然没有4.6.1里面的schema.xml文件,这怎么设置?后来看到别人的一个文件说可以设置,难道我去4.6.1复制一个过来,再仔细一看有个managed-schema文件,于是试着打开一看,看到了下面的内容:
This is the Solr schema file. This file should be named “schema.xml” and should be in the conf directory under the solr home(i.e. ./solr/conf/schema.xml by default)
3、在schema.xml添加filed,因为我的mysql数据库当中只有id和name两个字段,而name这个filed在schema.xml已经存在,我只需要添加id就行了,如下:
<fields>
<field name="id" type="int" indexed="true" stored="true" required="true" />
fields>
<uniqueKey>iduniqueKey>
<defaultSearchField>namedefaultSearchField>
4、修改solr-5.2.1/server/solr/collection/conf/下的solrconfig.xml的配置文件,配置一下添加数据库数据的xml,如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xmlstr>
lst>
requestHandler>
5、创建solrconfig.xml文件中的data-config.xml文件,内部主要配置了访问数据库的用户名、密码,以及对应的数据库的字段,文件内容如下:
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/database_name" user="userName" password="passWord"/>
<document>
<entity name="check_lawyer" query="select id, name from tableName">
<field column="id" name="id" />
<field column="name" name="name" />
entity>
document>
dataConfig>
注:上面的database_name是你创建的数据库名,userName是数据库用户名,passWord是数据库密码,tableName是你的表名,field区域当中的column对应数据库中的列,而name就是solr中显示的名称。
6、将solr-dataimporthandler-5.2.1.jar从solr-5.2.1/dist/文件夹下copy到solr-5.2.1/server/solr-webapp/webapp/WEB-INF/lib当中,此java包是导入数据用的。
8、从mysql官网中下载一个mysql-connector-java-5.1.35.zip压缩包,解压出一个mysql-connector-java-5.1.35-bin.jar包,将它copy到solr-5.2.1/server/lib下。
9、重启服务bin/solr restart,在在浏览器中输入:localhost:8983/solr/dataimport?command=full-import 来完成全量数据导入,在每次全量数据导入执行的时候,原有索引会被删除,如果不想删除原有索引,可以运行如下命令:localhost:8983/solr/dataimport?command=full-import&clean=false
10、若是不用步骤9的方法,也可以通过选择当前的core为collection,然后点击Dataimport,如果上面配置好的话,command下拉框就会有个full-import选择,选择它,然后点击下面的蓝色按钮Execute,等几分钟,刷新之后,出现Indexing completed. Added/Updated: 1963 documents. Deleted 0 documents. (Duration: 01s)类似的字段,说明导入mysql成功,此时就可以进行查询了
11、localhost:8983/solr/collection/select?q=%E6%98%A5&wt=json&indent=true输入这个链接就查询到结果了
三、相关错误:
1、如下,说明在schema.xml重复定义了id,把它屏蔽掉,重启服务
collection: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core collection: [schema.xml] Duplicate field definition for ‘id’ [[[id{type=string,properties=indexed,stored,omitNorms,omitTermFreqAndPositions,sortMissingLast,required, required=true}]]] and [[[id{type=int,properties=indexed,stored,omitNorms,omitTermFreqAndPositions,required, required=true}]]]. Schema file is /Users/user/lcg/Web/solrServer/solr-5.2.1/server/solr/collection/conf/schema.xml
2、如下,说明没有在schema.xml文件中定义name字段
collection: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core collection: default search field ‘name’ not defined or not indexed. Schema file is /Users/user/lcg/Web/solrServer/solr-5.2.1/server/solr/collection/conf/schema.xml
3、
后面少了个/,应该为
,修改完之后,重启服务
collection: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core collection: org.xml.sax.SAXParseException; systemId: solrres:/schema.xml; lineNumber: 1028; columnNumber: 12; 元素类型 “field” 的结束标记必须以 ‘>’ 分隔符结束。. Schema file is /Users/user/lcg/Web/solrServer/solr-5.2.1/server/solr/collection/conf/schema.xml
四、参考:
http://www.csdn123.com/html/itweb/20130726/23894_23889_23891.htm
http://tbwuming.iteye.com/blog/1152333
http://ju.outofmemory.cn/entry/19792
http://blog.csdn.net/hbuxzy/article/details/9254071