一个简单的COMPASS应用实例(compass1.1)

首先你要下载Compass framework: http://www.opensymphony.com/compass/
你需要在你的class path 中添加3个jar: compass.jar,commons-logging.jar,lucene-core.jar.
在你的项目中创建下面的目录或文件(可以根据自己的定义来改动):
compass.cfg.xml
- org
   - compass
     - sample
       - example
           alias.cmd.xml             
           CompassExample.java
           Phrase.cpm.xml
           Phrase.java

compass.cfg.xml:
xml 代码
xml version="1.0" encoding="UTF-8"?>       "-//Compass/Compass Core Configuration DTD 1.1//EN"        "http://www.opensymphony.com/compass/dtd/compass-core-configuration.dtd">   <compass-core-configuration>     <compass name="default">       <setting name="compass.engine.connection">targetsetting>           <meta-data resource="org/compass/sample/example/alias.cmd.xml" />         <mapping resource="org/compass/sample/example/Phrase.cpm.xml" />     compass>   compass-core-configuration>  
指定的target 是一个存储目录, 放索引文件的.

alias.cmd.xml:
  xml 代码
xml version="1.0" encoding="UTF-8"?>       "-//Compass/Compass Core Meta Data DTD 1.1//EN"        "http://www.opensymphony.com/compass/dtd/compass-core-meta-data.dtd">   <compass-core-meta-data>          <meta-data-group id="example" displayName="Example Meta Data">       <description>Example Meta Datadescription>       <uri>http://compass/exampleuri>                   <alias id="phrase" displayName="Phrase">         <description>phrase aliasdescription>         <uri>http://compass/example/phraseuri>         <name>phrasename>       alias>                   <meta-data id="author" displayName="Author">         <description>Author aliasdescription>         <uri>http://compass/example/authoruri>         <name>authorname>       meta-data>                  <meta-data id="text" displayName="Text">         <description>Text aliasdescription>         <uri>http://compass/example/texturi>         <name>textname>       meta-data>        meta-data-group>   compass-core-meta-data>  


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

java 代码
package org.compass.sample.example;       public class Phrase {      private Long id;            private String author;            private String text;            public Phrase() {};           /**        * @return author        */       public String getAuthor() {            return author;        }           /**        * @param author 要设置的 author        */       public void setAuthor(String author) {            this.author = author;        }           /**        * @return id        */       public Long getId() {            return id;        }           /**        * @param id 要设置的 id        */       public void setId(Long id) {            this.id = id;        }           /**        * @return text        */       public String getText() {            return text;        }           /**        * @param text 要设置的 text        */       public void setText(String text) {            this.text = text;        }                public String toString() {            return text;        }    }  
Phrase.cpm.xml:
 
xml 代码
xml version="1.0" encoding="UTF-8"?>       "-//Compass/Compass Core Mapping DTD 1.1//EN"        "http://www.opensymphony.com/compass/dtd/compass-core-mapping.dtd">   <compass-core-mapping package="org.compass.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.compass.sample.example;       import org.compass.core.Compass;    import org.compass.core.Compass;    import org.compass.core.CompassSession;    import org.compass.core.CompassTransaction;    import org.compass.core.config.CompassConfiguration;       public class CompassExample {            private Compass compass;            public static void main(String[] args) {        new CompassExample().process();      }            private void process() {        CompassConfiguration config = new CompassConfiguration().configure();        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);        System.out.println("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);        System.out.println("print() - Phrase by " + value.getAuthor() + ": " + value.getText());      }    }  
以下是结果:
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、付费专栏及课程。

余额充值