`

solr 3.5 配置及应用(三)

    博客分类:
  • solr
 
阅读更多
在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
分享到:
评论

相关推荐

    solr3.5配置及应用[借鉴].pdf

    solr3.5配置及应用[借鉴].pdf

    solr3.5配置及应用

    初学者学习solr时,可以借助此文档入门,学习solr

    solr_3.5_配置及应用

    solr_3.5_配置及应用

    Solr3.5开发应用指导

    基于Solr3.5的最新开发应用指导,文字加代码说明模式(Schedule.xml)、配置(solrconfig.xml)、索引,搜索等详细开发内容。

    solr教程(配置+集成)

    Solr是一个独立的企业级应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的xml文件, 生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回...

    SOLR的应用教程

    2 Solr的安装与配置 13 2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore...

    大型分布式网站架构与实践

     4.2.3 容量评估及应用水位 252  4.3 流量控制 255  4.3.1 流量控制实施 255  4.3.2 服务稳定性 260  4.3.3 高并发系统设计 265  4.4 性能优化 277  4.4.1 如何寻找性能瓶颈 277  4.4.2 性能测试工具 285  ...

    t淘淘商城项目 商城项目 视频和源码教程 详细

     近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

Global site tag (gtag.js) - Google Analytics