`
hilliate
  • 浏览: 135047 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Compass学习文档(2) (转)

阅读更多

      上面的只讲了Compass的建立索引也就是存储对象和加载对象,这里讲一下Compass的搜索查询功能。上面说了Compass和Hibernate是非常像的。Hibernate查询的时候用的是Criteriat和Query而Compass里用的是CompassQuery具有以上两个的功能。

      还是拿上面的例子做例子吧:

      在上面的JUnit测试用例里加入:

public void InsertCompass() 

    { 

        CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class); 

        Compass com = comConfig.buildCompass(); 

        CompassSession comSession =
com.openSession(); 

        CompassTransaction comTx =
comSession.beginTransaction(); 

         

        Article article = new Article(); 

        article.setId((long)0); 

        article.setContent("Compass学习文档"); 

        article.setTitle("学习Compass查询"); 

        article.setPublishDate(new Date()); 

        comSession.save(article); 

        article = new Article(); 

        article.setId((long)1); 

        article.setContent("Compass是第一个基于lucene的java开源框架"); 

        article.setTitle("学习Compass"); 

        article.setPublishDate(new Date()); 

        comSession.save(article); 

        comTx.commit(); 

    } 

 

      就是插入两个对象数据。

      下面我们就搜搜体验一下吧:

public void TestQuery() 

    { 

CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class); 

        Compass com = comConfig.buildCompass(); 

        CompassSession session =
com.openSession(); 

        CompassTransaction tx =
session.beginTransaction(); 

        CompassHits hits =
session.queryBuilder() 

         
.queryString("titleIndex:学习") 

         
.toQuery() 

       
.addSort("title",
CompassQuery.SortPropertyType.STRING) 

       
.addSort("publishDate",CompassQuery.SortPropertyType.INT) 

         
.hits(); 

        for(int
i=0;i<hits.getLength();i++) 

        { 

            System.out.println(((Article)hits.data(i)).getTitle()); 

        } 

    } 

 

      输出结果是

      学习Compass查询

      学习Compass

      其实Compass完全没毕要那么罗嗦,它就是为了依照Hibernate来的。让会Hibernate的程序员可以很容易的掌握Compass。搜索的前一部分就不说了,和Hibernate的初始化一样且前面也讲了,从CompassHits开始吧。

      可以看到:搜索就用到CompassHits,Query,CompassQueryBuilder这一点又和lucene很像。

      session.queryBuilder()返回CompassQueryBuilder的对象,再调用queryString来查询搜索字串。可这个构造字串就有学问了:“titleIndex:学习”表示指明字段名搜索,如果想指明多个字段呢可以用空格和“+”隔开如:“titleIndex:学习 +contentIndex:第”

      注意:查询字串里的标识不是对象的属性,而是对象的属性映射成索引的名字,这个是可以在Article.cmp.xml里看到的。还有就是一定要在两个搜索内容之间加空格要不然什么都搜不到。

      addSort就是对搜索出的结果按一定的顺序排序。

      Hits()呢就是返回hits结果集吧。

      最后用个for循环利用hits.data(i)将结果遍历输出。

      上面的例子达到了Hibernate中Query的功能。而CompassQuery还有和Criteriat功能一样的:再看个搜索的例子吧:

CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class); 

        Compass com
= comConfig.buildCompass(); 

        CompassSession
session = com.openSession(); 

        CompassTransaction
comTx = session.beginTransaction(); 

        CompassQueryBuilder
queryBuilder= session.queryBuilder(); 

        CompassQuery
compassQuery = queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "学习")).toQuery(); 

        CompassHits
hits = compassQuery.addSort("title", CompassQuery.SortPropertyType.STRING).hits(); 

        for(int
i=0;i<hits.getLength();i++) 

        { 

            System.out.println(((Article)hits.data(i)).getTitle()); 

        } 

        comTx.commit();

       CompassQuery里有lt,le,gt,ge和Criteriat是一个样的。不过Compass的jar包里没有eq这个函数,但是在Compass1.1M1的帮助文档中写着:

CompassQueryBuilder queryBuilder = session.createQueryBuilder();
 queryBuilder.bool().addMust(queryBuilder.eq("name", "jack")).addMust(queryBuilder.lt("birthdate", "19500101"))
      .toQuery().hits();

      这个可能是Compass的一个bug。

      既然没有eq我们就用:

      queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "学习")).toQuery();做个演示吧。

      结果理想的。

      具体的用法和Hibernate一样,也可以查看Compass的帮助文档。
 

分享到:
评论
2 楼 osacar 2011-06-13  
楼主讲得不错。
1 楼 zhou568xiao 2008-09-03  
先看看哦!

相关推荐

    Compass学习文档1

    2. `compass.cfg.xml`: 这是 Compass 的配置文件,指定了搜索引擎的连接(在这里是相对路径 `target/test`),以及映射文件的位置。`&lt;mapping&gt;` 标签用于指定每个对象的映射文件,这里是 `Article.cpm.xml`。 3. ...

    Compass原理深入学习笔记

    【Compass原理深入学习笔记】 Compass是一款基于Apache Lucene的全文搜索引擎框架,它为开发者提供了更高级别的抽象层,简化了搜索引擎的集成工作。在理解Compass之前,我们需要先了解全文检索的基本概念和原理。 ...

    Lucene+compass学习资料

    其索引结构基于倒排索引,能快速定位到包含特定词汇的文档,使得搜索性能卓越。在学习Lucene时,重点应掌握如何创建索引、执行查询以及优化搜索性能。 接着,我们转向Compass。Compass是一个基于Lucene的全文搜索...

    完整compass工程+建库sql+学习资料

    `compass学习笔记.doc`是一份关于Compass的学习文档,可能包含了使用Compass的基本步骤,常见问题解答,以及一些最佳实践。这份文档对于理解Compass的工作原理和实际应用是非常有价值的。 `lucene总结.chm`和`...

    compass完整可用项目

    此项目对于理解Compass和Lucene在实际应用中的使用,以及如何结合SSH框架开发Java Web应用具有很高的学习价值。通过分析和研究这个项目,开发者可以深入掌握Java全文搜索引擎的实现,以及如何在SSH框架下组织和管理...

    mongodb安装包和compass

    在Node.js学习过程中,MongoDB和Compass的结合使用可以帮助你更好地理解和操作数据库。通过Node.js的MongoDB驱动,你可以编写JavaScript代码来与MongoDB交互,创建和查询集合,执行CRUD(创建、读取、更新、删除)...

    compass的几个入门网页

    2. 学习Compass的核心概念,如网格系统、样式库和混入。 3. 实践创建简单项目,应用Compass的功能来编写样式。 4. 阅读官方文档和在线教程,加深理解。 5. 参考其他开发者的工作,了解如何在实际项目中使用Compass。...

    基于Lucene的搜索引擎框架Compass教程

    学习Compass可以从官方文档开始,了解其基本概念和API用法。此外,网上有许多教程和社区讨论,可以深入学习Compass的高级特性,如优化索引性能、定制分析器等。 总结,Compass作为基于Lucene的搜索引擎框架,为Java...

    使用compass+lucene实现简单的全文检索功能

    2. **配置 Compass**:创建一个 Compass 配置文件,定义搜索引擎的连接参数,例如目录或数据库的位置,以及要索引的数据源。还可以设置分析器(Analyzer),用于处理文本数据。 3. **创建索引**:使用 Compass 提供...

    compass-2.2.0.zip

    Lucene是Apache软件基金会的一个项目,它是一个高性能、全文本搜索库,但是直接使用Lucene可能会涉及到很多底层细节,对开发者来说有一定的学习曲线。Compass的出现就是为了降低这个门槛,使得开发人员可以更加专注...

    compass和wellplan学习总结.doc

    本文档总结了Compass和WellPlan的学习笔记,涵盖了油气工业中常用的井trajectory设计和分析、Well Planning和设计等方面的知识点。 一、井trajectory设计和分析 井trajectory设计和分析是油气工业中非常重要的一环...

    Compass_Setup_2010-06-25_16-11.rar

    2. 用户手册:PDF文档,详细介绍了软件的使用方法、操作流程和常见问题解答。 3. 更新日志:列出该版本相对于前一版本的改进和修复内容。 4. 配套库和驱动:包含必要的库文件和驱动程序,确保软件与不同GPS设备的...

    compass和wellplan学习总结材料.doc

    compass 和 wellplan 学习总结材料 compass 和 wellplan 是油气行业中常用的软件,分别用于钻井设计和油井规划。以下是 compass 和 wellplan 的学习总结材料。 一、compass 的创建 compass 是一款专业的钻井设计...

    compass_hibernate_spring2.zip

    压缩包内的文件“compass_hibernate_spring2”可能是包含源代码、配置文件和文档的目录,用户可以通过解压并导入到 IDE 中,跟随提供的说明来运行示例或学习如何集成这三个框架。 总的来说,这个压缩包提供了一个...

    mongodb-compass-1.20.5-win32-x64.rar

    2. **模式分析**:此工具可以分析数据库的模式,展示文档结构的统计信息,包括最常见的字段、字段类型和空值。这有助于数据库管理员理解数据的分布和潜在的问题,如不一致的数据格式。 3. **查询构建器**:MongoDB...

    mongodb-compass-1.27.1-win32-x64.zip

    通过使用MongoDB Compass,数据库管理员和开发者可以更有效地管理MongoDB实例,提高工作效率,同时降低错误和学习曲线。它是MongoDB生态系统中的重要组成部分,尤其是对于那些需要图形化操作和快速数据洞察的团队而...

    基于Compass2.2与Spring 结合建立索引的实例

    2. **配置Spring**:创建Spring配置文件,配置Compass相关的bean,包括索引管理器(IndexManager)、查询执行器(QueryExecutor)等。 3. **实现服务层**:创建服务层接口及其实现类,利用Spring的注入机制注入...

    compass:COMPASS 文档和用户手册

    《compass:COMPASS 文档和用户手册》是针对 Compass 框架的详细参考资料,它为开发者和用户提供了深入理解及使用 Compass 的关键知识。Compass 是一个强大的 CSS(层叠样式表)预处理器,它扩展了 CSS 语言,使得...

    mongodb-compass-community-1.16.4-win32-x64.zip

    MongoDB是一种流行的开源NoSQL数据库系统,以文档型数据模型为主,支持键值对、集合和JSON格式的数据存储。MongoDB的设计目标是提供高可用性、高性能和易于扩展的解决方案,特别适合处理大规模数据和实时应用程序。...

    compass+ssh2集成 hibernategps问题

    标题中的"compass+ssh2集成 hibernategps问题"涉及到的是Java开发中的一些关键技术和库的集成。这里的Compass是一个全文搜索引擎,SSH2是Spring、Struts和Hibernate的集成框架,而HibernateGPS则是用于跟踪Hibernate...

Global site tag (gtag.js) - Google Analytics