欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

solr 3.5 配置及应用(三) 博客分类: solr  

程序员文章站 2024-03-18 19:11:58
...
在solr 3.5 配置及应用(二)中在 Document文档和JavaBean相互转换时是比较麻烦的,现在讲用利用DocumentObjectBinder对象将SolrInputDocument 和 JavaBean对象相互转换

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

package com.stu.entity;   
 import java.io.Serializable;  
 import java.util.Date;  
 import javax.persistence.Column;  
 import javax.persistence.Entity;  
 import javax.persistence.GeneratedValue;  
 import javax.persistence.GenerationType;  
 import javax.persistence.Id;  
 import javax.persistence.Table;  
 import javax.persistence.Transient;  
 import org.apache.solr.client.solrj.beans.Field;  
   
 import com.stu.commons.util.DateUtils;  
   
 /** 
  * Description: 
  * @author  LiChunming 
  * @version V1.0  
  * @createDateTime:2011-5-17 下午04:38:11  
  * @Company: MSD.  
  * @Copyright: Copyright (c) 2011 
  **/  
 @Entity  
 @Table(name="blogs")  
 public class BlogsDO implements Serializable{  
     /** 
      *  
 */  
     private static final long serialVersionUID = -4721368786493126226L;  
       
     private String id;  
     @Field("blogId")  
     private Integer blogsId;  
     @Field  
     private String title;  
     @Field  
     private String content;  
     //与文档的字段名称是createTime 不一样时要注明,保持一样  
     @Field("createTime")    
     private Date gmtCreate;  
     @Field  
     private String nickName;  
     @Field  
     private String bTypeId;  
     @Field  
     private String bTypeName;  
     private Date gmtModified;  
     private String revDate;  
     private String sDate="";  
     private String eDate="";  
       
     @Transient //(hibernate 的注解)  
     @Field  //在这注解也可以  
     public String getId() {  
         return id;  
     }  
     public void setId(String id) {  
         this.id = id;  
     }  
     //(hibernate 的注解)  
     @Id  
     @GeneratedValue(strategy = GenerationType.IDENTITY)  
     public Integer getBlogsId() {  
         return blogsId;  
     }  
     public void setBlogsId(Integer blogsId) {  
         this.blogsId = blogsId;  
     }  
     public String getTitle() {  
         return title;  
     }  
     public void setTitle(String title) {  
         this.title = title;  
     }  
     public String getContent() {  
         return content;  
     }  
     public void setContent(String content) {  
         this.content = content;  
     }  
       
     public String getNickName() {  
         return nickName;  
     }  
     public void setNickName(String nickName) {  
         this.nickName = nickName;  
     }  
       
     public String getbTypeId() {  
         return bTypeId;  
     }  
     public void setbTypeId(String bTypeId) {  
         this.bTypeId = bTypeId;  
     }  
     @Column(name="gmt_create")  
     public Date getGmtCreate() {  
         return gmtCreate;  
     }  
     public void setGmtCreate(Date gmtCreate) {  
         this.gmtCreate = gmtCreate;  
     }  
     @Column(name="gmt_modified")  
     public Date getGmtModified() {  
         return gmtModified;  
     }  
     public void setGmtModified(Date gmtModified) {  
         this.gmtModified = gmtModified;  
     }  
     @Transient  
     public String getRevDate() {  
          if (this.gmtCreate == null) {  
                 return null;  
             }  
           return DateUtils.formatDate(gmtCreate, "yyyy-MM-dd HH:mm:ss");  
     }  
     public void setRevDate(String revDate) {  
         this.revDate = revDate;  
     }  
     @Transient  
     public String getbTypeName() {  
         return bTypeName;  
     }  
     public void setbTypeName(String bTypeName) {  
         this.bTypeName = bTypeName;  
     }  
     @Transient  
     public String getsDate() {  
         return sDate;  
     }  
     public void setsDate(String sDate) {  
         this.sDate = sDate;  
     }  
     @Transient  
     public String geteDate() {  
         return eDate;  
     }  
     public void seteDate(String eDate) {  
         this.eDate = eDate;  
     }  
     @Override  
     public String toString() {  
         return this.id + "#" + this.blogsId + "#" + this.title + "#" + this.content + "#" + this.bTypeId + "#" + this.bTypeName + "#" + this.nickName+"#" + this.gmtCreate;  
     }  
       
 }  


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

public void writerBlog(BlogsDO blog) {  
         // TODO Auto-generated method stub  
          try {  
              blog.setId(SerialNumberUtil.getRandomNum(4));  
               //获取连接服务  
               CommonsHttpSolrServer solrServer= SolrServer.getInstance().getServer();  
               //实例化  
               DocumentObjectBinder binder = new DocumentObjectBinder();  
               //javabean对象转化为SolrInputDocument对象  
               SolrInputDocument doc1 = binder.toSolrInputDocument(blog);  
               solrServer.add(doc1);  
               //提交事务才能生效  
               solrServer.commit();  
         } catch (SolrServerException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         } catch (IOException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         }  
     }  


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;  
}  


参考:http://blog.csdn.net/chunming8302/article/details/7321501

solr 视频:http://www.icoolxue.com/play/2293