solr 3.5 配置及应用(三)

来源:互联网 发布:网络澳门赌场是真的吗 编辑:程序博客网 时间:2024/05/18 01:26

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     @Transient111     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     @Transient121     public String getbTypeName() {122         return bTypeName;123     }124     public void setbTypeName(String bTypeName) {125         this.bTypeName = bTypeName;126     }127     @Transient128     public String getsDate() {129         return sDate;130     }131     public void setsDate(String sDate) {132         this.sDate = sDate;133     }134     @Transient135     public String geteDate() {136         return eDate;137     }138     public void seteDate(String eDate) {139         this.eDate = eDate;140     }141     @Override142     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 block16             e.printStackTrace();17         } catch (IOException e) {18             // TODO Auto-generated catch block19             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;
}
复制代码

原创粉丝点击