您的位置:首页 > 其它

solr 3.5 配置及应用(三)

2012-09-15 12:27 465 查看

solr 3.5 配置及应用(三)

2012-03-05 11:47 by sunney, 1178 阅读, 2 评论,
收藏,

编辑
在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;

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: