一个简单的COMPASS应用

一个简单的COMPASS应用

首先你要下载Compass framework: Download Compass.
你需要在你的class path 中添加4个jar compass-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. "http://static.compassframework.org/dtd/compass-core-configuration-1.0.dtd">    
  4.   
  5.   
  6.   
  7. <  
  8.   
  9. compass-core-configuration>    
  10. <compass>  
  11.   
  12. <setting name="compass.engine.connection">target/indexsetting>  
  13.   
  14. <meta-data resource="org/compassframework/sample/example/alias.cmd.xml" />  
  15.   
  16. compass>  
  17.   
  18. compass-core-configuration>  
  19.   

 alias.cmd.xml:

xml 代码
  1.   
  2.   
  3. xml version="1.0"?>    
  4. "-//Compass/Compass Core Meta Data DTD 1.0//EN"    
  5. "http://static.compassframework.org/dtd/compass-core-meta-data-1.0.dtd">    
  6. <compass-core-meta-data>    
  7. <meta-data-group id="example" displayName="Example Meta Data">  
  8.   
  9. <description>Example Meta Datadescription>  
  10.   
  11. <uri>http://compass/exampleuri>  
  12.   
  13.   
  14. <alias id="phrase" displayName="Phrase">  
  15.   
  16. <description>Phrase aliasdescription>  
  17.   
  18. <uri>http://compass/example/phraseuri>  
  19.   
  20. <name>phrasename>  
  21.   
  22. alias>  
  23.   
  24. <meta-data id="author" displayName="Author">  
  25.   
  26. <description>Author aliasdescription>  
  27.   
  28. <uri>http://compass/example/authoruri>  
  29.   
  30. <name>authorname>  
  31.   
  32. meta-data>  
  33.   
  34. <meta-data id="text" displayName="Text">  
  35.   
  36. <description>Text aliasdescription>  
  37.   
  38. <uri>http://compass/example/texturi>  
  39.   
  40. <name>textname>  
  41.   
  42. meta-data>  
  43.   
  44. meta-data-group>  
  45.   
  46. 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 代码
xml version="1.0"?>     "-//Compass/Compass Core Mapping DTD 1.0//EN"     "http://static.compassframework.org/dtd/compass-core-mapping-1.0.dtd">     <compass-core-mapping package="org.compassframework.sample.example">     <class name="Phrase" alias="${example.phrase}">      <id name="id" />      <property name="author">      <meta-data>${example.author}meta-data>      property>      <property name="text">      <meta-data>${example.text}meta-data>      property>      class>      compass-core-mapping>  
CompassExample.java
java 代码
package org.compassframework.sample.example;       import org.apache.log4j.Logger;       import org.compassframework.core.Compass;    import org.compassframework.core.Compass;    import org.compassframework.core.CompassSession;    import org.compassframework.core.CompassTransaction;    import org.compassframework.core.config.CompassConfiguration;       public class CompassExample {        private static final Logger logger = Logger.getLogger(CompassExample.class);          private compasscompass;          public static void main(String[] args){         new CompassExample().process();     }          private void process(){         CompassConfiguration config = new CompassConfiguration();         config.configure("org/compassframework/sample/example/compass.cfg.xml");         config.addClass(Phrase.class);         compass = config.buildCompass();         compass.getSearchEngineIndexManager().deleteIndex();         compass.getSearchEngineIndexManager().createIndex();               createIndex();         search("mule AND crazy");         search("Marisol OR Ramon");     }          private void createIndex(){      CompassSession session = compass.openSession();         CompassTransaction tx = session.beginTransaction();         Phrase phrase = new Phrase();         phrase.setAuthor("Joe");         phrase.setText("I don't think it's nice you laughing. " +                 "You see my mule don't like people laughing. " +                 "He gets the crazy idea you're laughing at him. " +                 "Now if you apologize like I know you're going to, " +                 "I might convince him that you really didn't mean it...");         phrase.setId(new Long(1));         session.save(phrase);         tx.commit();         session.close();     }          private void search(String query){         CompassSession session = compass.openSession();         CompassTransaction tx = session.beginTransaction();         Compass hits = session.find(query);         if (logger.isDebugEnabled()) {            logger.debug("search() - Found " + hits.getLength()+" hits for \""+query+"\"");         }         for (int i = 0; i < hits.getLength(); i++) {            print(hits, i);         }         hits.close();         tx.commit();         session.close();         compass.close();     }          private void print(Compass hits, int hitNumber) {         Phrase value = (Phrase)hits.data(hitNumber);         if (logger.isDebugEnabled()) {             logger.debug("print() - Phrase by " + value.getAuthor() + ": "                + value.getText());         }     }       }      

 

为了保证能打印出我们的测试,需要加入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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值