`

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配置及应用

    ### Solr 3.5配置及应用知识点详解 #### 一、Solr简介 - **定义**:Apache Solr是一款高性能、开源的搜索服务器。它使用Java语言开发,并且主要基于HTTP协议和Apache Lucene技术实现。 - **数据模型**:在Solr中,...

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

    总的来说,Solr 3.5的配置和应用涉及到多个层面,包括服务器的搭建、Solr核心组件的配置、分词器的集成以及Schema的定制。这些步骤对于实现一个高效、功能丰富的全文搜索引擎至关重要。通过熟练掌握这些知识,开发者...

    Solr3.5整合Tomcat

    总之,Solr 3.5 整合到 Tomcat 可以让你利用 Tomcat 的稳定性和灵活性来运行和管理 Solr 搜索服务,从而在 web 应用中实现高效的全文检索功能。通过理解 Solr 的配置和 Tomcat 的部署机制,你可以更好地定制和扩展你...

    solr 3.5 msg整合可直接使用

    Solr 3.5 是一个老版本的Apache Solr,这是一个基于Java的全文搜索引擎服务器,广泛用于企业级的搜索应用。Tomcat则是一款流行的开源Java Servlet容器,常用来部署Java Web应用程序,包括Solr这样的服务。"solr 3.5 ...

    solr3.5配置

    对于中文搜索,Solr 3.5 可以与第三方分词器,如 IKAnalyzer 3.2.8 整合。这需要将 IKAnalyzer 的 JAR 文件放入 Solr 的 `lib` 目录,并在 `schema.xml` 文件中配置分词器。例如,添加一个名为 `text` 的 `fieldType...

    solr_3.5_配置及应用

    本文将深入探讨 Solr 3.5 的配置及其在实际应用中的关键点。 首先,配置 Solr 3.5 包括以下几个主要步骤: 1. **环境搭建**:你需要先安装 Java Development Kit (JDK) 并设置好环境变量,因为 Solr 是基于 Java ...

    solr3.5与tomcat的部署配置以及与java项目的集成

    ### Solr 3.5与Tomcat的部署配置及与Java项目的集成 #### 一、Solr 3.5与Tomcat的部署配置 **1. 下载与安装Solr** 首先,需要从官方或其他可信任来源下载Apache Solr 3.5.0。根据描述中的链接(虽然不可用),...

    solr 3.5 tomcat 整合可直接使用

    Solr 3.5与Tomcat的整合是一个关键的步骤,尤其对于那些希望在Java应用服务器上部署Solr搜索引擎的企业。Solr是一个基于Apache Lucene的开源搜索平台,提供了高效、可扩展的全文检索、命中高亮、拼写检查、分类、 ...

    solr教程(配置+集成)

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

    solr3.5与tomcat6集成,添加自己的分词器

    ### Solr 3.5 与 Tomcat 6 集成及自定义分词器配置详解 #### 一、Solr与Tomcat集成概述 Solr 是一个高性能、采用 Java 开发的企业级搜索服务器,它基于 Lucene 库提供了一个完整的全文检索框架。而 Tomcat 是一个...

    在tomcat环境下搭建solr3.5和mmseg4j搜索引擎

    通过以上步骤,我们已经完成了在Tomcat环境下搭建Solr 3.5及MMSEG4J中文分词器的基础配置工作。这些配置使得Solr能够更好地处理中文文档,并提供更准确的中文检索结果。此外,通过MMSEG4J提供的不同分词模式,可以...

    solr开发应用教程

    在本教程中,我们将深入探讨Solr 3.5版本的开发应用,重点关注其实战应用,以帮助开发者更好地理解和利用这个强大的搜索引擎。 一、Solr概述 Solr的核心功能包括文本分析、索引构建、查询处理和结果排序。它支持...

    apache-solr-3.5.0.jar

    Apache Solr是一个开源的企业级搜索平台,用于构建高效、可扩展的全文检索应用。这个名为"apache-solr-3.5.0.jar"的压缩包包含两个关键组件:`apache-solr-core-3.5.0.jar`和`apache-solr-solrj-3.5.0.jar`,它们...

    apache-solr-3.5.0.tgz

    Apache Solr 是一个高度可扩展、高性能的搜索和分析服务,广泛应用于企业的全文检索系统。它基于Java开发,是Apache软件基金会的一个顶级项目。Solr 3.5.0 版本是Solr的一个历史版本,它包含了丰富的特性和优化,以...

    EasyNet.Solr-3.5.1

    标签“全文索引”和“solr3.5”强调了EasyNet.Solr库的核心功能和所兼容的Solr版本。全文索引是Solr的一个关键特性,允许用户对文本数据进行快速且精确的搜索。而“solr3.5”表明该库是为Solr 3.5版本设计的,可能不...

    SOLR的应用教程

    **三、Solr的应用** 3.1 SOLR应用概述 介绍Solr的应用场景和使用流程。 3.2 一个简单的例子 包括Solr Schema设计、构建索引和搜索测试。 3.3 搜索引擎的规划设计 3.3.1 定义业务模型 3.3.2 定制索引服务 3.3.3 ...

    solr资料以及问题汇总

    首先,"eContact+V3.5(3.5.7.4Q1)Solr檢索附件需求分析書V1.0-ZhaoHaiming20100415.docx"文件可能是关于一个特定项目中Solr的检索附件需求分析,可能涵盖了如何利用Solr进行文档检索和管理的需求和设计思路。...

Global site tag (gtag.js) - Google Analytics