solr 3.5 配置及应用(三)

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

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

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

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

[java]  view plain copy
  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、查询文档

[html]  view plain copy
  1. public List<BlogsDO> searchBlogsListbyBinder( Page page) throws IOException, ParseException {  
  2.        List<BlogsDO> blogList=new ArrayList<BlogsDO>();  
  3.        CommonsHttpSolrServer solrServerSolrServer.getInstance().getServer();   
  4.        SolrQuery sQuery = new SolrQuery();  
  5.        String para="*:*";   
  6.        sQuery.setQuery(para);  
  7.  try {  
  8.                 QueryResponse response=solrServer.query(sQuery);  
  9.                 //获取查询文档  
  10.                 SolrDocumentList list = response.getResults();  
  11.                 //初始化DocumentObjectBinder对象  
  12.                 DocumentObjectBinder binder = new DocumentObjectBinder();  
  13.                 //SolrDocumentList对象转化为 List<BlogsDO>对象  
  14.                 blogList=binder.getBeans(BlogsDO.class, list);  
  15.                 //总记录数  
  16.                 Integer counts=(int) list.getNumFound();  
  17.                 page.setCounts(counts);  
  18.                   
  19.             } catch (SolrServerException e) {  
  20.                 // TODO Auto-generated catch block  
  21.                 e.printStackTrace();  
  22.             }  
  23.               
  24.         return blogList;  
  25. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值