solr 3.5 配置及应用(三)

在solr 3.5 配置及应用(二)中在 Document文档和JavaBean相互转换时是比较麻烦的,现在讲用利用DocumentObjectBinder对象将SolrInputDocument 和 JavaBean对象相互转换。

1、在实体类(JavaBean),用@Field来注解字段,注解的名称要与文档的字段名称一致,如@Field("blogId")。如:blogsDO 这也有hibernate的注解要看清楚.

  1 package com.stu.entity; 
3 import java.io.Serializable;
4 import java.util.Date;
5 import javax.persistence.Column;
6 import javax.persistence.Entity;
7 import javax.persistence.GeneratedValue;
8 import javax.persistence.GenerationType;
9 import javax.persistence.Id;
10 import javax.persistence.Table;
11 import javax.persistence.Transient;
12 import org.apache.solr.client.solrj.beans.Field;
13
14 import com.stu.commons.util.DateUtils;
15
16 /**
17 * Description:
18 * @author LiChunming
19 * @version V1.0
20 * @createDateTime:2011-5-17 下午04:38:11
21 * @Company: MSD.
22 * @Copyright: Copyright (c) 2011
23 **/
24 @Entity
25 @Table(name="blogs")
26 public class BlogsDO implements Serializable{
27 /**
28 *
29 */
30 private static final long serialVersionUID = -4721368786493126226L;
31
32 private String id;
33 @Field("blogId")
34 private Integer blogsId;
35 @Field
36 private String title;
37 @Field
38 private String content;
39 //与文档的字段名称是createTime 不一样时要注明,保持一样
40 @Field("createTime")
41 private Date gmtCreate;
42 @Field
43 private String nickName;
44 @Field
45 private String bTypeId;
46 @Field
47 private String bTypeName;
48 private Date gmtModified;
49 private String revDate;
50 private String sDate="";
51 private String eDate="";
52
53 @Transient //(hibernate 的注解)
54 @Field //在这注解也可以
55 public String getId() {
56 return id;
57 }
58 public void setId(String id) {
59 this.id = id;
60 }
61 //(hibernate 的注解)
62 @Id
63 @GeneratedValue(strategy = GenerationType.IDENTITY)
64 public Integer getBlogsId() {
65 return blogsId;
66 }
67 public void setBlogsId(Integer blogsId) {
68 this.blogsId = blogsId;
69 }
70 public String getTitle() {
71 return title;
72 }
73 public void setTitle(String title) {
74 this.title = title;
75 }
76 public String getContent() {
77 return content;
78 }
79 public void setContent(String content) {
80 this.content = content;
81 }
82
83 public String getNickName() {
84 return nickName;
85 }
86 public void setNickName(String nickName) {
87 this.nickName = nickName;
88 }
89
90 public String getbTypeId() {
91 return bTypeId;
92 }
93 public void setbTypeId(String bTypeId) {
94 this.bTypeId = bTypeId;
95 }
96 @Column(name="gmt_create")
97 public Date getGmtCreate() {
98 return gmtCreate;
99 }
100 public void setGmtCreate(Date gmtCreate) {
101 this.gmtCreate = gmtCreate;
102 }
103 @Column(name="gmt_modified")
104 public Date getGmtModified() {
105 return gmtModified;
106 }
107 public void setGmtModified(Date gmtModified) {
108 this.gmtModified = gmtModified;
109 }
110 @Transient
111 public String getRevDate() {
112 if (this.gmtCreate == null) {
113 return null;
114 }
115 return DateUtils.formatDate(gmtCreate, "yyyy-MM-dd HH:mm:ss");
116 }
117 public void setRevDate(String revDate) {
118 this.revDate = revDate;
119 }
120 @Transient
121 public String getbTypeName() {
122 return bTypeName;
123 }
124 public void setbTypeName(String bTypeName) {
125 this.bTypeName = bTypeName;
126 }
127 @Transient
128 public String getsDate() {
129 return sDate;
130 }
131 public void setsDate(String sDate) {
132 this.sDate = sDate;
133 }
134 @Transient
135 public String geteDate() {
136 return eDate;
137 }
138 public void seteDate(String eDate) {
139 this.eDate = eDate;
140 }
141 @Override
142 public String toString() {
143 return this.id + "#" + this.blogsId + "#" + this.title + "#" + this.content + "#" + this.bTypeId + "#" + this.bTypeName + "#" + this.nickName+"#" + this.gmtCreate;
144 }
145
146 }
147

 2、增加文档的方法(这方法就简单多了)

 1 public void writerBlog(BlogsDO blog) {
2 // TODO Auto-generated method stub
3 try {
4 blog.setId(SerialNumberUtil.getRandomNum(4));
5 //获取连接服务
6 CommonsHttpSolrServer solrServer= SolrServer.getInstance().getServer();
7 //实例化
8 DocumentObjectBinder binder = new DocumentObjectBinder();
9 //javabean对象转化为SolrInputDocument对象
10 SolrInputDocument doc1 = binder.toSolrInputDocument(blog);
11 solrServer.add(doc1);
12 //提交事务才能生效
13 solrServer.commit();
14 } catch (SolrServerException e) {
15 // TODO Auto-generated catch block
16 e.printStackTrace();
17 } catch (IOException e) {
18 // TODO Auto-generated catch block
19 e.printStackTrace();
20 }
21 }

3、查询文档

public List<BlogsDO> searchBlogsListbyBinder( Page page) throws IOException, ParseException {
List<BlogsDO> blogList=new ArrayList<BlogsDO>();
CommonsHttpSolrServer solrServer= SolrServer.getInstance().getServer();
SolrQuery sQuery = new SolrQuery();
       String para="*:*"; 
sQuery.setQuery(para);
try {
QueryResponse response=solrServer.query(sQuery);
//获取查询文档
SolrDocumentList list = response.getResults();
//初始化DocumentObjectBinder对象
DocumentObjectBinder binder = new DocumentObjectBinder();
//SolrDocumentList对象转化为 List<BlogsDO>对象
blogList=binder.getBeans(BlogsDO.class, list);
//总记录数
Integer counts=(int) list.getNumFound();
page.setCounts(counts);

} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return blogList;
}



    

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值