根据第二章完成的基础进行。
表结构如下
-- 表结构sql如下
SET FOREIGN_KEY_CHECKS=0;
-- Table structure for student
DROP TABLE IF EXISTS student;
CREATE TABLE student (
sid bigint(20) NOT NULL,
sname varchar(255) DEFAULT NULL,
sage int(11) DEFAULT NULL,
saddress varchar(255) DEFAULT NULL,
sdescript text,
PRIMARY KEY (sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Records of student
INSERT INTO student VALUES ('1', '李四', '23', '中华路1号', '好学生');
INSERT INTO student VALUES ('2', '张三', '34', '华信路3号', '坏学生,经常做坏事!');
maven中使用的jar版本参考如下
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>5.3.1</version>
</dependency>
<!-- solr包 依赖commons-logging-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
java源码
package com.bamboo.solr_Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SolrPingResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test;
import org.omg.PortableInterceptor.SUCCESSFUL;
/*********
* solrj的使用demo
* maven中使用的jar版本参考如下
* 链接ulr两种方式1直接链接,2连接根目录再根据核心查询得到repose
*
* @author laiding
*
*/
public class SolrJ {
String url = "http://localhost:8983/solr/s1";
//solr 服务器地址
public static final String solrServerUrl = "http://localhost:8983/solr/";
//solrhome下的core
public static final String solrCroeHome = "s1";
public static void main( String[] args )
{
SolrJ sj =new SolrJ();
try {
//1增加索引
//sj.addIndex();
//批量添加索引
//sj.addIndexSum();
sj.queryAll();
//删除索引
sj.delIndex("-1437387460");
sj.queryAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 测试连通性
@Test
public void createSolrClient() {
try {
SolrClient solr = new HttpSolrClient(url);
SolrPingResponse response = solr.ping();
// 打印执行时间
System.out.println(response.getElapsedTime());
solr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查询所有索引
*
* @throws Exception
*/
public void queryAll() {
try {
//SolrClient client = new HttpSolrClient(solrServerUrl + "/" + solrCroeHome);
//QueryResponse resp = client.query(new SolrQuery("*:*"));
SolrClient client = new HttpSolrClient(solrServerUrl);
QueryResponse resp = client.query(solrCroeHome, new SolrQuery("*:*"));
List<Student> lists = resp.getBeans(Student.class);
System.out.println(lists.size());
for (Student student : lists) {
System.out.println(student.getId()+"\t"+student.getName());
}
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 增加索引
*
* @throws Exception
*/
@Test
public void addIndex() throws Exception {
try {
SolrClient solr = new HttpSolrClient(url);
// 添加方式1
SolrInputDocument docs = new SolrInputDocument();
docs.addField("id", "3");
docs.addField("name", "aaa");
docs.addField("age", "22");
docs.addField("descript", "student 2016-7-19");
UpdateResponse response = solr.add(docs);
System.out.println(response.getElapsedTime());
// 添加方式2
Student Student = new Student();
Student.setId(4);
Student.setName("bbb");
Student.setAge(22);
Student.setDescript("this student is chinese");
response = solr.addBean(Student);
System.out.println(response.getElapsedTime());
solr.commit();
solr.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 批量添加索引
*
* @throws Exception
*/
@Test
public void addIndexSum() throws Exception {
SolrClient solr = new HttpSolrClient(url);
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 25; i++) {
Student student1 = new Student();
student1.setId((int)System.currentTimeMillis());
student1.setName("student"+i);
student1.setAge(i);
list.add(student1);
}
UpdateResponse response = solr.addBeans(list);
System.out.println(response.getElapsedTime());
solr.commit();
solr.close();
}
/**
* 删除索引
*/
@Test
public void delIndex(String id) throws Exception {
SolrClient solr = new HttpSolrClient(url);
UpdateResponse response = solr.deleteById(id);
System.out.println(response.getElapsedTime());
solr.commit();
solr.close();
}
/**
* 简单查询
*
* @throws Exception
*/
@Test
public void query() throws Exception {
SolrClient solr = new HttpSolrClient(url);
Map<String, String> map = new HashMap<String, String>();
map.put("q", "*:*");
SolrParams params = new MapSolrParams(map);
QueryResponse resp = solr.query(params);
// 以下是第二种方法
// String queryString="content:test";
// MultiMapSolrParams mParams =
// SolrRequestParsers.parseQueryString("queryString");
// QueryResponse resp = solr.query(mParams);
SolrDocumentList docsList = resp.getResults();
System.out.println(docsList.size());
System.out.println("---------------------");
for (SolrDocument doc : docsList) {
System.out.println(doc.get("id"));
}
solr.close();
}
@Test
public void find() throws SolrServerException, IOException {
SolrClient solr = new HttpSolrClient(url);
SolrQuery solrQuery = new SolrQuery();
// solrQuery.setQuery("*:*");
solrQuery.set("q", "*:*");
// 设置分页的相关属性
solrQuery.setStart(3);
solrQuery.setRows(5);
QueryResponse queryResponse = solr.query(solrQuery);
SolrDocumentList list = queryResponse.getResults();
for (SolrDocument document : list) {
Object id = document.get("id");
Object number = document.get("number");
System.out.println(id + "\t" + number);
}
}
}