|
1.创建sql
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(50) DEFAULT NULL,
`userAge` int(11) DEFAULT NULL,
`userAddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');
INSERT INTO `user` VALUES ('2', 'test1', '22', 'suzhou');
INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');
INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');
INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing');
View Code 2. 配置D:\Solr\solr-4.10.3\example\solr\collection1\conf\solrconfig.xml
在<requestHandler name="/select">前面加上dataimport的处理的Handler
<requestHandler name="/dataimport">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
3.在同目录下添加data-config.xml<?xml version="1.0" encoding="UTF-8"?><dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/mybatis" user="root" password="luxx" batchSize="-1" />
<document name="testDoc">
<entity name="user" pk="id"
query="select * from user">
<field column="id" name="id"/>
<field column="userName" name="userName"/>
<field column="userAge" name="userAge"/>
<field column="userAddress" name="userAddress"/>
</entity>
</document>
</dataConfig>
dataSource是数据库数据源。
Entity就是一张表对应的实体,pk是主键,query是查询语句。
Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。
4.修改同目录下的schema.xml,这是Solr对数据库里的数据进行索引的模式
(1)保留_version_ 这个field
(2)添加索引字段:这里每个field的name要和data-config.xml里的entity的field的name一样,一一对应。
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<!--<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false"/> -->
<field name="userName" type="text_general" indexed="true" stored="true" />
<field name="userAge" type="int" indexed="true" stored="true" />
<field name="userAddress" type="text_general" indexed="true" stored="true" />
(3)设置唯一主键:<uniqueKey>id</uniqueKey>,注意:Solr中索引的主键默认是只支持type="string"字符串类型的,而我的数据库中id是int型的,会有问题,解决方法:修改同目录下的elevate.xml,注释掉下面2行,这貌似是Solr的Bug,原因不明
<doc />
<doc exclude="true" /> (4)拷贝mysql-connector-java-5.1.22-bin.jar和solr-dataimporthandler-4.10.3.jar到
D:\Solr\solr-4.10.3\example\solr-webapp\webapp\WEB-INF\lib。一个是mysql的java驱动,另一个在D:\Solr\solr-4.10.3\dist目录里,是org.apache.solr.handler.dataimport.DataImportHandler所在的jar。
5.创建实体类
package com.sishuok;
import org.apache.solr.client.solrj.beans.Field;
public>
@Field
private int>@Fieldprivate String username; @Field
private String password;
public int getId() {return>}
public void setId(int>this.id =>}
public String getUsername() {return username; }
public void setUsername(String username) {this.username = username; }
public String getPassword() {return password; }
public void setPassword(String password) {this.password = password; }
@Override
public String toString() {return "User [id=" +>}
}
View Code 6.添加
/** * 添加索引
*
*
@throws IOException *
@throws SolrServerException*/ @Test
public void test4() throws Exception { User user
=new User(); user.setId(
1); user.setPassword(
"1234"); user.setUsername(
"tom4"); server.addBean(user);
server.commit();
}
View Code 7.查询
/** * 查询索引
*
*
@throws IOException *
@throws SolrServerException*/ @Test
public void test5() throws Exception { SolrQuery query
= new SolrQuery(); query.setQuery(
"*:*"); query.setStart(
0); query.setRows(
10); QueryResponse response
= server.query(query); SolrDocumentList solrDocumentList
= response.getResults(); System.out.println(
"查询的条数为: " + solrDocumentList.getNumFound());for (SolrDocument solrDocument : solrDocumentList) { System.out.println(
"id: " + solrDocument.get("id")); System.out.println(
"username: " + solrDocument.get("username")); System.out.println(
"password: " + solrDocument.get("password")); }
}
View Code 参考连接:http://www.cnblogs.com/luxiaoxun/p/4442770.html
|
|
|