solr 3.5 配置及应用(三)
2012-09-15 12:27
465 查看
solr 3.5 配置及应用(三)
2012-03-05 11:47 by sunney, 1178 阅读, 2 评论,收藏,
编辑
在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;
}
相关文章推荐
- solr 3.5 配置及应用(一)
- solr 3.5 配置及应用(三)
- solr 3.5 配置及应用(二)
- solr 3.5 配置及应用(一)
- solr 3.5 配置及应用(三)
- Solr 3.5 入门配置应用
- solr 3.5 配置及应用(二)
- Solr 3.5 入门配置应用
- solr 3.5 配置及应用(一)
- Solr 3.5 入门配置应用
- Solr 3.5 入门配置应用
- solr 3.5 配置及应用(三)
- solr 3.5 配置及应用(二)
- solr 3.5 配置及server设置
- Solr 3.5 + Tomcat 8.5.16 + mmseg4j 配置并运行
- solr 基本原理 配置,solr java 初级应用
- Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
- 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)
- solr3.5整合tomcat并配置中文分词
- solr 3.5 配置及服务器设置