zoukankan      html  css  js  c++  java
  • solr 3.5 配置及应用(三)

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



        

        

    记住该记住的,忘记该忘记的,改变能改变的,接受不能改变的!
  • 相关阅读:
    【抄书笔记】《数据压缩导论》
    【举个栗子】我对BP算法的理解
    【举个栗子】我对支持向量机的理解
    linux中监控oracle alert 文件中的ORA-xxx报错信息并发邮件perl脚本
    从dba_hist_sqlstat视图中查找过去时段最占用资源的会话
    AWR信息导出
    Oracle表变化趋势追踪记录 & 表历史 统计信息查看
    oracle-database-maa-best-practices
    详解 db file sequential read 等待事件
    oracle性能优化:Linux环境下合理配置大内存页(HugePage)
  • 原文地址:https://www.cnblogs.com/yuanermen/p/2380235.html
Copyright © 2011-2022 走看看