`
compass
  • 浏览: 11820 次
  • 性别: Icon_minigender_1
  • 来自: 福建
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个简单的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 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->
  3.     "-//Compass/Compass Core Configuration DTD 1.1//EN"   
  4.     "http://www.opensymphony.com/compass/dtd/compass-core-configuration.dtd">  
  5. <compass-core-configuration>  
  6.   <compass name="default">  
  7.     <setting name="compass.engine.connection">targetsetting>      
  8.     <meta-data resource="org/compass/sample/example/alias.cmd.xml" />    
  9.     <mapping resource="org/compass/sample/example/Phrase.cpm.xml" />  
  10.   compass>  
  11. compass-core-configuration>  
指定的target 是一个存储目录, 放索引文件的.

alias.cmd.xml:
  xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->
  3.     "-//Compass/Compass Core Meta Data DTD 1.1//EN"   
  4.     "http://www.opensymphony.com/compass/dtd/compass-core-meta-data.dtd">  
  5. <compass-core-meta-data>       
  6.   <meta-data-group id="example" displayName="Example Meta Data">  
  7.     <description>Example Meta Datadescription>  
  8.     <uri>http://compass/exampleuri>  
  9.            
  10.     <alias id="phrase" displayName="Phrase">  
  11.       <description>phrase aliasdescription>  
  12.       <uri>http://compass/example/phraseuri>  
  13.       <name>phrasename>  
  14.     alias>  
  15.            
  16.     <meta-data id="author" displayName="Author">  
  17.       <description>Author aliasdescription>  
  18.       <uri>http://compass/example/authoruri>  
  19.       <name>authorname>  
  20.     meta-data>     
  21.        
  22.     <meta-data id="text" displayName="Text">  
  23.       <description>Text aliasdescription>  
  24.       <uri>http://compass/example/texturi>  
  25.       <name>textname>  
  26.     meta-data>     
  27.   meta-data-group>  
  28. compass-core-meta-data>  


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

java 代码
  1. package org.compass.sample.example;   
  2.   
  3. public class Phrase {   
  4.   private Long id;   
  5.      
  6.   private String author;   
  7.      
  8.   private String text;   
  9.      
  10.   public Phrase() {};   
  11.   
  12.     /**  
  13.      * @return author  
  14.      */  
  15.     public String getAuthor() {   
  16.         return author;   
  17.     }   
  18.   
  19.     /**  
  20.      * @param author 要设置的 author  
  21.      */  
  22.     public void setAuthor(String author) {   
  23.         this.author = author;   
  24.     }   
  25.   
  26.     /**  
  27.      * @return id  
  28.      */  
  29.     public Long getId() {   
  30.         return id;   
  31.     }   
  32.   
  33.     /**  
  34.      * @param id 要设置的 id  
  35.      */  
  36.     public void setId(Long id) {   
  37.         this.id = id;   
  38.     }   
  39.   
  40.     /**  
  41.      * @return text  
  42.      */  
  43.     public String getText() {   
  44.         return text;   
  45.     }   
  46.   
  47.     /**  
  48.      * @param text 要设置的 text  
  49.      */  
  50.     public void setText(String text) {   
  51.         this.text = text;   
  52.     }   
  53.        
  54.     public String toString() {   
  55.         return text;   
  56.     }   
  57. }  
Phrase.cpm.xml:
 
xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->
  3.     "-//Compass/Compass Core Mapping DTD 1.1//EN"   
  4.     "http://www.opensymphony.com/compass/dtd/compass-core-mapping.dtd">  
  5. <compass-core-mapping package="org.compass.sample.example">  
  6.   <class name="Phrase" alias="${example.phrase}">  
  7.     <id name="id"/>  
  8.     <property name="author">  
  9.       <meta-data>${example.author}meta-data>  
  10.     property>  
  11.     <property name="text">  
  12.       <meta-data>${example.text}meta-data>  
  13.     property>  
  14.   class>  
  15. compass-core-mapping>  
CompassExample.java:
java 代码
  1. package org.compass.sample.example;   
  2.   
  3. import org.compass.core.Compass;   
  4. import org.compass.core.Compass;   
  5. import org.compass.core.CompassSession;   
  6. import org.compass.core.CompassTransaction;   
  7. import org.compass.core.config.CompassConfiguration;   
  8.   
  9. public class CompassExample {   
  10.      
  11.   private Compass compass;   
  12.      
  13.   public static void main(String[] args) {   
  14.     new CompassExample().process();   
  15.   }   
  16.      
  17.   private void process() {   
  18.     CompassConfiguration config = new CompassConfiguration().configure();   
  19.     compass = config.buildCompass();   
  20.     compass.getSearchEngineIndexManager().deleteIndex();   
  21.     compass.getSearchEngineIndexManager().createIndex();   
  22.        
  23.     createIndex();   
  24.     search("mule AND crazy");       
  25.     search("Marisol OR Ramon");       
  26.   }   
  27.      
  28.   private void createIndex() {   
  29.     CompassSession session = compass.openSession();   
  30.     CompassTransaction tx = session.beginTransaction();   
  31.     Phrase phrase = new Phrase();   
  32.     phrase.setAuthor("Joe");   
  33.     phrase.setText("I don't think it's nice you laughing. " +        
  34.         "You see my mule don't like people laughing. " +        
  35.         "He gets the crazy idea you're laughing at him. " +        
  36.         "Now if you apologize like I know you're going to, " +        
  37.         "I might convince him that you really didn't mean it...");   
  38.     phrase.setId(new Long(1));   
  39.     session.save(phrase);   
  40.     tx.commit();   
  41.     session.close();   
  42.   }   
  43.      
  44.   private void search(String query) {   
  45.     CompassSession session = compass.openSession();   
  46.     CompassTransaction tx = session.beginTransaction();   
  47.     Compass hits = session.find(query);   
  48.     System.out.println("search() - Found " + hits.getLength() + " hits for \"" + query + "\"");   
  49.     for(int i = 0; i < hits.getLength(); i++) {   
  50.         print(hits, i);   
  51.     }   
  52.     hits.close();   
  53.     tx.commit();   
  54.     session.close();   
  55.     compass.close();   
  56.   }   
  57.      
  58.   private void print(Compass hits, int hitNumber) {   
  59.     Phrase value = (Phrase) hits.data(hitNumber);   
  60.     System.out.println("print() - Phrase by " + value.getAuthor() + ": " + value.getText());   
  61.   }   
  62. }  
以下是结果:
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"
分享到:
评论
2 楼 lljhyp 2008-12-14  
如果用你例子中的dtd就会报 java.lang.IllegalArgumentException: Using old format for DTD, please use the url [http://www.compass-project.org/dtd/]
1 楼 lljhyp 2008-12-14  
这个1.1的dtd现在还能用吗

相关推荐

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包2

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包3

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics