solr 3.5 配置及应用(三)

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;
}
复制代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值