设为首页 收藏本站
查看: 1123|回复: 0

[经验分享] solr 3.5 配置及应用(三)

[复制链接]

尚未签到

发表于 2015-7-16 11:09:18 | 显示全部楼层 |阅读模式
  在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 searchBlogsListbyBinder( Page page) throws IOException, ParseException {
       List blogList=new ArrayList();
       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对象
                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;
}
  

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87243-1-1.html 上篇帖子: 高性能solr c#客户端EasyNet.Solr 下篇帖子: solr 3.5 配置及应用(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表