`

一个简单的COMPASS应用

阅读更多
一个简单的COMPASS应用

首先你要下载Compass framework: Download Compass.
你需要在你的class path 中添加4个jarcompass-x/modules/core/compass-core-x.jar, compass/modules/core/lib/commons-logging-x.jar, compass-x/modules/core/lib/log4j-x.jar, compass-x/modules/core/lib/lucene-core-x-rc1-dev.jar.
在你的项目中创建下面的目录(可以根据自己的定义来改动):
log4j.properties
- org
   - compassframework
     - sample
       - example
           alias.cmd.xml
           compass.cfg.xml
           CompassExample.java
           Phrase.cpm.xml
           Phrase.java
下面说一下几个重要的配置文件

 compass.cfg.xmlcode

指定的target/index 是一个存储目录放索引文件的

(这个类必须有个无参数的构造和id属性)

xml 代码
  1. <!---->
  2.   
  3.   
  4. "http://static.compassframework.org/dtd/compass-core-configuration-1.0.dtd">    
  5.   
  6.   
  7.   
  8. <  
  9.   
  10. compass-core-configuration>    
  11. <compass>  
  12.   
  13. <setting name="compass.engine.connection">target/indexsetting>  
  14.   
  15. <meta-data resource="org/compassframework/sample/example/alias.cmd.xml" />  
  16.   
  17. compass>  
  18.   
  19. compass-core-configuration>  
  20.   

 alias.cmd.xml:

xml 代码
  1. <!---->  
  2.   
  3. xml version="1.0"?>    
  4. <!---->
  5. "-//Compass/Compass Core Meta Data DTD 1.0//EN"    
  6. "http://static.compassframework.org/dtd/compass-core-meta-data-1.0.dtd">    
  7. <compass-core-meta-data>    
  8. <meta-data-group id="example" displayName="Example Meta Data">  
  9.   
  10. <description>Example Meta Datadescription>  
  11.   
  12. <uri>http://compass/exampleuri>  
  13.   
  14.   
  15. <alias id="phrase" displayName="Phrase">  
  16.   
  17. <description>Phrase aliasdescription>  
  18.   
  19. <uri>http://compass/example/phraseuri>  
  20.   
  21. <name>phrasename>  
  22.   
  23. alias>  
  24.   
  25. <meta-data id="author" displayName="Author">  
  26.   
  27. <description>Author aliasdescription>  
  28.   
  29. <uri>http://compass/example/authoruri>  
  30.   
  31. <name>authorname>  
  32.   
  33. meta-data>  
  34.   
  35. <meta-data id="text" displayName="Text">  
  36.   
  37. <description>Text aliasdescription>  
  38.   
  39. <uri>http://compass/example/texturi>  
  40.   
  41. <name>textname>  
  42.   
  43. meta-data>  
  44.   
  45. meta-data-group>  
  46.   
  47. compass-core-meta-data>  

Phrase.java

java 代码
  1. package org.compassframework.sample.example;   
  2.   
  3. public class Phrase {   
  4.   
  5.  private String author;   
  6.   
  7.  private String text;   
  8.   
  9.  private Long id;   
  10.   
  11.  public Phrase() {   
  12.   
  13.  }   
  14.   
  15.  public String getAuthor() {   
  16.      return author;   
  17.  }   
  18.   
  19.  public void setAuthor(String author) {   
  20.      this.author = author;   
  21.  }   
  22.   
  23.  public String getText() {   
  24.      return text;   
  25.  }   
  26.   
  27.  public void setText(String text) {   
  28.      this.text = text;   
  29.  }   
  30.   
  31.  public Long getId() {   
  32.      return id;   
  33.  }   
  34.   
  35.  public void setId(Long id) {   
  36.      this.id = id;   
  37.  }   
  38.   
  39.  public String toString() {   
  40.   
  41.      return text;   
  42.  }   
  43.   
  44. }    
Phrase.cpm.xml

 

xml 代码
  1. <!---->xml version="1.0"?>    
  2. <!---->
  3. "-//Compass/Compass Core Mapping DTD 1.0//EN"    
  4. "http://static.compassframework.org/dtd/compass-core-mapping-1.0.dtd">    
  5. <compass-core-mapping package="org.compassframework.sample.example">    
  6. <class name="Phrase" alias="${example.phrase}">  
  7.   
  8. <id name="id" />  
  9.   
  10. <property name="author">  
  11.   
  12. <meta-data>${example.author}meta-data>  
  13.   
  14. property>  
  15.   
  16. <property name="text">  
  17.   
  18. <meta-data>${example.text}meta-data>  
  19.   
  20. property>  
  21.   
  22. class>  
  23.   
  24. compass-core-mapping>  
CompassExample.java
java 代码
  1. package org.compassframework.sample.example;   
  2.   
  3. import org.apache.log4j.Logger;   
  4.   
  5. import org.compassframework.core.Compass;   
  6. import org.compassframework.core.Compass;   
  7. import org.compassframework.core.CompassSession;   
  8. import org.compassframework.core.CompassTransaction;   
  9. import org.compassframework.core.config.CompassConfiguration;   
  10.   
  11. public class CompassExample {   
  12.   
  13.  private static final Logger logger = Logger.getLogger(CompassExample.class);   
  14.     
  15.  private compasscompass;   
  16.     
  17.  public static void main(String[] args){   
  18.      new CompassExample().process();   
  19.  }   
  20.     
  21.  private void process(){   
  22.      CompassConfiguration config = new CompassConfiguration();   
  23.      config.configure("org/compassframework/sample/example/compass.cfg.xml");   
  24.      config.addClass(Phrase.class);   
  25.      compass = config.buildCompass();   
  26.      compass.getSearchEngineIndexManager().deleteIndex();   
  27.      compass.getSearchEngineIndexManager().createIndex();   
  28.      
  29.      createIndex();   
  30.      search("mule AND crazy");   
  31.      search("Marisol OR Ramon");   
  32.  }   
  33.     
  34.  private void createIndex(){   
  35.   CompassSession session = compass.openSession();   
  36.      CompassTransaction tx = session.beginTransaction();   
  37.      Phrase phrase = new Phrase();   
  38.      phrase.setAuthor("Joe");   
  39.      phrase.setText("I don't think it's nice you laughing. " +    
  40.             "You see my mule don't like people laughing. " +    
  41.             "He gets the crazy idea you're laughing at him. " +    
  42.             "Now if you apologize like I know you're going to, " +    
  43.             "I might convince him that you really didn't mean it...");   
  44.      phrase.setId(new Long(1));   
  45.      session.save(phrase);   
  46.      tx.commit();   
  47.      session.close();   
  48.  }   
  49.     
  50.  private void search(String query){   
  51.      CompassSession session = compass.openSession();   
  52.      CompassTransaction tx = session.beginTransaction();   
  53.      Compass hits = session.find(query);   
  54.      if (logger.isDebugEnabled()) {   
  55.         logger.debug("search() - Found " + hits.getLength()+" hits for \""+query+"\"");   
  56.      }   
  57.      for (int i = 0; i < hits.getLength(); i++) {   
  58.         print(hits, i);   
  59.      }   
  60.      hits.close();   
  61.      tx.commit();   
  62.      session.close();   
  63.      compass.close();   
  64.  }   
  65.     
  66.  private void print(Compass hits, int hitNumber) {   
  67.      Phrase value = (Phrase)hits.data(hitNumber);   
  68.      if (logger.isDebugEnabled()) {   
  69.          logger.debug("print() - Phrase by " + value.getAuthor() + ": "  
  70.              + value.getText());   
  71.      }   
  72.  }   
  73.   
  74. }   
  75.   

 

为了保证能打印出我们的测试,需要加入log4j.properties :
log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%n
log4j.logger.org.compassframework.sample.example=DEBUG


下面是打印出来的测试结果:
search() - Found 1 hits for "mule AND crazy"
print() - Phrase by Joe: I don't think it's nice you laughing...
search() - Found 0 hits for "Marisol OR Ramon"

分享到:
评论

相关推荐

    compass完整可用项目

    【compass完整可用项目】是一个基于特定技术栈的软件开发项目,该项目的核心是Compass库,一个与Lucene紧密集成的全文搜索引擎工具。Compass提供了一种简单的方式来在Java应用程序中集成全文搜索功能,使得开发者...

    Beauty-Compass是在Android设备上运行的指南针的简单演示应用程序 .zip

    Beauty-Compass是在Android设备上运行的指南针的简单演示应用程序。 .zip,beauty compass是一个简单的在android设备上运行的compass演示应用程序。与日出日落事件相关的令人敬畏的设计。

    compass annotation关联关系

    Compass 是一个全文搜索引擎库,它是对 Lucene 的封装,为 Java 应用提供了一种简单易用的接口。在 Compass 中,Annotation 是一种元数据注解方式,它允许开发者在对象模型上直接定义搜索映射,使得对象与索引之间的...

    compass的几个入门网页

    Compass是一个基于Sass的CSS预处理器框架,它极大地扩展了CSS的功能,使得开发者能够更加高效、优雅地编写样式表。下面将详细讲解Compass的基本概念、安装过程、主要功能以及如何通过它来构建入门级的网页项目。 一...

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

    本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...

    Compass全文检索系列之一:Compass入门

    本文将介绍Compass,一个基于Lucene的全文搜索引擎库,为Java开发者提供了一种简单易用的方式来集成全文检索功能。Compass不仅提供了与ORM框架(如Hibernate、JPA等)的无缝集成,还支持动态索引更新,使得实时数据...

    Compass 的java代码

    下面是一个简单的示例,展示如何使用Compass进行搜索: ```java // 初始化Compass Compass compass = new CompassBuilder().configure("/path/to/compass.conf").build(); // 开启Gps,开始索引 compass.getGps()....

    compass2简单例子

    标题 "compass2简单例子" 指向的是一个关于 Compass 的使用教程,Compass 是一个基于 Sass 的 CSS 预处理器。它简化了编写复杂的 CSS3 规则,并提供了易于管理的项目结构。这个简单的例子可能包括如何设置 Compass、...

    OpenStack Days China 2016 华为Wei Shao:Compass开源项目介绍

    Compass项目对于希望通过简单、高效、可扩展的方式管理数据中心的用户来说是一个非常实用的工具。它的开源特性意味着用户可以自由地使用和改进代码,同时参与到一个活跃的社区中。随着云计算和虚拟化技术的不断发展...

    Lucene+compass学习资料

    Compass作为Lucene的一个高级封装,简化了在应用程序中集成搜索引擎的操作;而Ajax(Asynchronous JavaScript and XML)则通过异步通信提升了用户体验。本文将围绕这三个技术展开深入的探讨。 首先,我们来了解...

    整合compass2.0 spring hibernate示例源程序

    Compass是一款基于Lucene的全文搜索引擎库,它为Java应用程序提供了一个简单易用的接口,用于管理和执行全文搜索。在2.0版本中,Compass提供了更多优化和性能提升,以支持更复杂的应用场景。 Spring是一个广泛使用...

    Compass.rar

    Compass是一个开源的、基于Apache Lucene的搜索引擎库,它提供了高级的搜索功能,并且能够与各种持久层框架无缝集成,如Hibernate、JPA和iBatis等。通过使用Compass,开发者可以轻松地在应用程序中添加全文索引和...

    mongodb安装包和compass

    Compass是MongoDB的官方图形界面工具,它提供了一个用户友好的界面,用于可视化数据库和集合,帮助开发者和管理员进行数据探索、查询构建、性能分析以及基本的数据库管理。通过Compass,用户可以轻松地浏览和操作...

    compass_使用详解.pdf compass_教程 compass_试用案例

    ### Compass 使用详解 #### 一、Compass 概述 Compass 是一款开源的 Java 库,用于简化 Lucene 的使用。它通过提供类似于 Hibernate 的...对于需要处理大量结构化数据的应用来说,Compass 是一个非常值得考虑的选择。

    简单的compass示例源码

    Compass是基于Java的一个开源搜索引擎库,它为开发者提供了在应用程序中集成全文检索功能的能力。Compass的核心是构建在Apache Lucene之上,Lucene是一个强大的文本搜索库,而Compass则在其基础上添加了对ORM(对象...

    compass-2.2.0.zip

    1. **搜索引擎API**:Compass提供了一个简单易用的API,使得开发者可以方便地进行索引创建、查询、更新和删除等操作。这个API比直接使用Lucene的API更加直观,减少了编写搜索引擎代码的工作量。 2. **对象-搜索引擎...

    compass jar包

    Compass 2.1.0 版本是这个库的一个重要版本,它优化了性能并修复了一些已知问题,使得在应用中集成和使用更加顺畅。在这个jar包中,你将找到所有必要的类和库,以便将搜索引擎功能集成到你的项目中。 Compass的...

    Compass与Struts2SpringHibernate的整合示例

    Compass的核心功能是提供了一个简单易用的API,使得开发者能够方便地在数据库中的对象上添加全文索引。它支持多种数据源,包括关系型数据库(如MySQL、Oracle)、文件系统以及内存。Compass利用Lucene的强大搜索功能...

    compass2.1.4包+所用lucene包+中文分词器

    Compass 是一个基于 Lucene 的全文检索框架,它提供了一种高级的、面向对象的方式来管理和集成搜索引擎到你的应用程序中。在“compass2.1.4包”中,包含了 Compass 框架的版本 2.1.4,这个版本可能包含了性能优化、...

Global site tag (gtag.js) - Google Analytics