1. 之前已经配置好了solr服务,并已经启动。
2.在工程中导入solr3.6.1中的jar
apache-solr-core-3.6.1.jar
apache-solr-solrj-3.6.1.jar
solrj-lib\commons-codec-1.6.jar
solrj-lib\commons-httpclient-3.1.jar
solrj-lib\commons-io-2.1.jar
solrj-lib\jcl-over-slf4j-1.6.1.jar
solrj-lib\slf4j-api-1.6.1.jar
junit-4.8.2.jar
直接上代码
public class Book implements Serializable{
private Long id;
private String name;
private String author;
private String title;
private Date time;
private String content;
public Book() {
}
@Field("id")// 对应schema.xml中的 field name=id
public void setId(Long id) {
this.id = id;
}
@Field("name")
public void setName(String name) {
this.name = name;
}
@Field("author")
public void setAuthor(String author) {
this.author = author;
}
@Field("title")
public void setTitle(String title) {
this.title = title;
}
@Field("last_modified")
public void setTime(Date time) {
this.time = time;
}
@Field("content")// 这个是自己添加的中文分词 <field name="content" type="textComplex" indexed="true" stored="true"/>
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", author=" + author
+ ", title=" + title + ", time=" + time + ", content="
+ content + "]";
}
public Book(Long id, String name, String author, String title, Date time,
String content) {
super();
this.id = id;
this.name = name;
this.author = author;
this.title = title;
this.time = time;
this.content = content;
}
...
//get
}
来个测试类
public class SolrTest {
private SolrServer server;
@Before
public void before(){
try {
server = new CommonsHttpSolrServer("http://localhost:8088/solr");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
/**
* <p>插入数据</p>
*/
@Test
public void testIndex(){
List<Book> list = new ArrayList<Book>(5);
for (int i=1; i<=5;i++) {
Book b = new Book(new Long(i), "书籍"+i, "作者"+i, "标题"+i, new Date(), "这"+i+"本书的类容不错");
list.add(b);
}
try {
UpdateResponse resp= server.addBeans(list);
System.out.println(resp);
server.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testSearch(){
SolrQuery query = new SolrQuery("name:书籍");
//title由于schema.xml中定义为multiValued="true" 多值(数组),而我的属性定义为String,直接获取会报错的
query.setFields("id ","name","author","last_modified","content");//指定查询域
try {
QueryResponse resp = server.query(query);
List<Book> books = resp.getBeans(Book.class);
for (Book book : books) {
System.out.println(book);
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
}