`

compass使用的步骤

阅读更多
打入lucene,paoding分词器,compass,common-log.jar相关的jar包,
可以使用配置或者注释的方式来使用compass.

使用xml配置方式:
01.<?xml version="1.0" encoding="utf-8"?> 
02.<compass-core-config xmlns="http://www.compass-project.org/schema/core-config" 
03.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
04.    xsi:schemaLocation="http://www.compass-project.org/schema/core-config 
05.    http://www.compass-project.org/schema/compass-core-config-2.2.xsd"> 
06. 
07.    <compass name="default"> 
08. 
09.        <!-- 配置索引库的存储目录 --> 
10.        <connection> 
11.            <file path="e:/liuyan_index" /> 
12.        </connection> 
13.         
14.        <cache> 
15.            <firstLevel type="org.compass.core.cache.first.NullFirstLevelCache" /> 
16.        </cache> 
17.         
18.        <mappings> 
19.            <class name="com.sharp.liuyan.so.ArticleSo" /> 
20.        </mappings> 
21.         
22.        <settings> 
23.            <!-- setting元素就像于property元素 --> 
24.            <setting name="compass.engine.analyzer.default.type"  
25.                value="net.paoding.analysis.analyzer.PaodingAnalyzer"/>   
26.            <!-- 配置高亮 --> 
27.            <setting name="compass.engine.highlighter.default.formatter.simple.pre"  
28.                value="<font color='red'><b>"/> 
29.            <setting name="compass.engine.highlighter.default.formatter.simple.post" 
30.                value="</b></font>"/> 
31.                                    
32.        </settings> 
33.         
34.    </compass> 
35. 

使用注释方式:
Compass compass=new CompassAnnotationsConfiguration()
.setSetting("compass.engine.analyzer.default.type","net.paoding.analysis.analyzer.PaodingAnalyzer")
.setSetting(CompassEnvironment.CONNECTION,"c:/lucene")
.setSetting("compass.engine.highlighter.default.formatter.simple.pre", "<span style='color:red;'>")
.setSetting("compass.engine.highlighter.default.formatter.simple.post", "</span>")
.addScan("com.domain").buildCompass();
Message message=new Message();
message.setId(1L);
message.setTitle("当你孤单你会想起谁");
message.setContent("当你孤单你会想起谁,你想不想找个人来陪");
message.setCreateTime(new Date());

CompassSession session=compass.openSession();
session.create(message);
session.commit();



相关Message的注解:
@Searchable
public class Message {
@SearchableId
private Long id;
@SearchableProperty(index=Index.ANALYZED,store=Store.YES)
private String title;
@SearchableProperty(index=Index.ANALYZED,store=Store.YES)
private String content;
@SearchableProperty(index=Index.NO,store=Store.YES)
private Date createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

}


@Test
public void test3(){
Compass compass=new CompassConfiguration().configure().buildCompass();
CompassSession session=compass.openSession();
CompassHits hits=session.find("title:孤单");
for(int i=0;i<hits.getLength();i++){
Message message=(Message)hits.data(i);
message.setTitle(hits.highlighter(i).fragment("title"));
message.setContent(hits.highlighter(i).fragment("content"));
System.out.println(message.getId()+"--"+message.getTitle()+"--"+message.getContent()+"--"+message.getCreateTime().toString());
}
}


3:与spring整合时的配置

1.<!-- 使用annotation配置,指定要转换的POJO。PO类在compass的classMappings值指定 --> 
2.    <bean id="annotationConfiguration" 
3.        class="org.compass.annotations.config.CompassAnnotationsConfiguration"> 
4.    </bean> 
5.    
6.   <bean id="compass" class="org.compass.spring.LocalCompassBean"> 
7.        <!-- OSEM映射的对象PO类 --> 
8.        <property name="classMappings"> 
9.            <list> 
10.               <value>com.core.persistence.po.Article</value> 
11.               <value>com.core.persistence.po.Author</value> 
12.            </list> 
13.        </property> 
14.        <!-- 使用注解配置 --> 
15.        <property name="compassConfiguration" ref="annotationConfiguration"/> 
16.        <property name="compassSettings"> 
17.            <props> 
18.                <!-- 索引文件在服务器上的存储路径 如:file://d:/index --> 
19.                <prop key="compass.engine.connection">/lucene/indexes</prop> 
20.                <!-- 在内存中建立索引 
21.               <prop key="compass.engine.connection">ram://index</prop> 
22.               --> 
23.                <prop key="compass.transaction.factory"> 
24.                    org.compass.spring.transaction.SpringSyncTransactionFactory 
25.                 </prop> 
26.                 <!-- 配置高亮为红色 --> 
27.                <prop key="compass.engine.highlighter.default.formatter.simple.pre"> 
28.                    <![CDATA[<font color="red"><b>]]> 
29.                </prop> 
30.                <prop 
31.                    key="compass.engine.highlighter.default.formatter.simple.post"> 
32.                    <![CDATA[</b></font>]]> 
33.                </prop> 
34.            </props> 
35.        </property> 
36.  
37.        <property name="transactionManager" ref="transactionManager"/> 
38.    </bean> 
39.    
40.    <bean id="compassTemplate" class="org.compass.core.CompassTemplate"> 
41.        <property name="compass" ref="compass"/> 
42.    </bean> 
43.    
44.    <!-- 与hibernate的绑定,经Hiberante的数据改变会自动被反射到索引里面(增加、修改、删除操作). --> 
45.   <bean id="hibernateGpsDevice" 
46.        class="org.compass.gps.device.hibernate.HibernateGpsDevice"> 
47.        <property name="name"> 
48.            <value>hibernateDevice</value> 
49.        </property> 
50.        <property name="sessionFactory" ref="sessionFactory"/> 
51.        <property name="mirrorDataChanges"> 
52.            <value>true</value> 
53.        </property> 
54.    </bean> 
55.    
56.    <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" 
57.        init-method="start" destroy-method="stop"> 
58.        <property name="compass" ref="compass"/> 
59.        <property name="gpsDevices"> 
60.            <list> 
61.              <ref local="hibernateGpsDevice"/>   
62.            </list> 
63.        </property> 
64.    </bean> 
65.  
66.    <!-- 定时重建索引(利用quartz)或随Spring ApplicationContext启动而重建索引 --> 
67.    <bean id="compassIndexBuilder" class="com.lucene.service.CompassIndexBuilder" lazy-init="false"> 
68.        <property name="compassGps" ref="compassGps"/> 
69.        <property name="buildIndex" value="true"/> 
70.        <property name="lazyTime" value="10"/> 
71.    </bean> 
72.  
73. 
74.  
75.public class CompassIndexBuilder implements InitializingBean { 
76.  
77.    private static final Logger log = Logger.getLogger(CompassIndexBuilder.class); 
78.  
79.    // 是否需要建立索引,可被设置为false使本Builder失效. 
80.    private boolean buildIndex = true; 
81.  
82.    // 索引操作线程延时启动的时间,单位为秒 
83.    private int lazyTime = 10; 
84.  
85.    // Compass封装 
86.    private CompassGps compassGps; 
87.  
88.    // 索引线程 
89.    private Thread indexThread = new Thread() { 
90.  
91.        @Override 
92.        public void run() { 
93.            try { 
94.                Thread.sleep(lazyTime * 1000); 
95.  
96.                log.info("begin compass index..."); 
97.                long beginTime = System.currentTimeMillis(); 
98.                // 重建索引. 
99.                // 如果compass实体中定义的索引文件已存在,索引过程中会建立临时索引, 
100.                // 索引完成后再进行覆盖. 
101.                compassGps.index(); 
102.                long costTime = System.currentTimeMillis() - beginTime; 
103.                log.info("compss index finished."); 
104.                log.info("costed " + costTime + " milliseconds"); 
105.            } catch (InterruptedException e) { 
106.            } 
107.        } 
108.    }; 
109.  
110.    /**
111.     * 实现<code>InitializingBean</code>接口,在完成注入后调用启动索引线程.
112.     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
113.     */ 
114.    public void afterPropertiesSet() throws Exception { 
115.        if (buildIndex) { 
116.            indexThread.setDaemon(true); 
117.            indexThread.setName("Compass Indexer"); 
118.            indexThread.start(); 
119.        } 
120.    } 
121.  
122.    public void setBuildIndex(boolean buildIndex) { 
123.        this.buildIndex = buildIndex; 
124.    } 
125.  
126.    public void setLazyTime(int lazyTime) { 
127.        this.lazyTime = lazyTime; 
128.    } 
129.  
130.    public void setCompassGps(CompassGps compassGps) { 
131.        this.compassGps = compassGps; 
132.    } 
133.} 


1.Compass compass = compassTemplate.getCompass(); 
2.CompassSession session=compass.openSession(); 
3.List list = new ArrayList(); 
4.CompassHits hits= session.queryBuilder().queryString(queryString).toQuery().hits(); 
5.for(int i=0;i<hits.length();i++){ 
6.    Person hit=( Person)hits.data(i); 
7.    list.add(hit); 
8.} 
9.session.close(); 
10.return list; 



paoding解牛分词器配置信息:
1:导入jar包
2:配置paoding-dic-home.properties文件,指定词典路径
3:复制词典到src目录下
4:在copass配置文件中修改分词器配置
分享到:
评论

相关推荐

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

    Compass 的使用步骤与 Hibernate 非常类似,主要包括以下几个阶段: ##### 3.1 设计搜索实体 - **步骤**:创建一个 Java 类,定义其中包含的属性,例如 `Product` 类包含 `id`, `name` 等字段。 - **示例代码**: ...

    mongodb安装包和compass

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

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

    Compass 和 Lucene 是两个在 Java 开发环境中广泛使用的全文搜索引擎工具。它们可以帮助开发者构建高效、强大的文本搜索功能。本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,...

    compass搜索引擎技术

    Compass搜索引擎技术是一种基于...通过以上步骤,你可以在Eclipse环境下,结合MySQL数据库,利用Compass搜索引擎技术实现类似Google的搜索功能。这不仅简化了开发过程,也提升了用户体验,使得数据检索变得快速且准确。

    java搜索 compass资料

    根据题目中的描述,“去官方网站下载compass的jar包”,这里可以理解为安装Compass的基本步骤。对于2.1版本的Compass,首先需要访问其官方网站(http://www.compass-project.org/)下载所需的JAR包。在下载过程中,...

    Compass 的java代码

    通过以上步骤,你可以开始探索Compass提供的强大功能,包括索引优化、实时索引更新、多语言支持等。记住,Compass的主要目标是简化Lucene的使用,让开发者更专注于业务逻辑,而不是底层的搜索引擎实现。因此,无论你...

    Compass原理深入学习笔记

    3. Compass Spring:整合Spring框架,便于在Spring应用中使用Compass。 Compass中的重要概念: - Compass相当于Hibernate的SessionFactory,负责创建和管理索引。 - CompassSession类似Hibernate的Session,管理...

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

    在实际应用中,我们可以按照以下步骤来使用Compass: 1. **安装与依赖**:将Compass库添加到项目中,根据所使用的ORM框架选择相应的版本。 2. **配置ORM集成**:配置Compass与ORM框架的连接,指定数据源和索引存储...

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

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

    基于Luncene的compass框架详解-java

    Compass框架的使用流程主要包括以下几个步骤: 1. **下载与安装**: 访问官方网站或相关资源站点下载Compass框架及其依赖的jar包,如Compass框架、lucene-analyzers、lucene-core、lucene-highlighter等。确保所选...

    Compass技术文档

    使用Compass的过程主要包括以下几个步骤: 1. **环境准备**:下载并安装Compass框架所需的jar包,包括Compass框架本身、Lucene相关库以及其他可能需要的依赖库。 2. **配置文件**:根据需求创建或修改配置文件,...

    Compass简单学习

    博文链接指向了iteye上的一个博客,虽然描述为空,但可以预期博主可能详细介绍了如何开始使用Compass,包括安装步骤、基本用法、示例代码等,是一个不错的学习起点。 **6. 文件"library"** 在压缩包中的"library...

    Compass全文检索完整实例,可运行

    Compass的使用步骤通常包括以下几个关键部分: 1. **配置**: 首先,你需要在项目中添加Compass的依赖,例如jar包。在这个实例中,所有必要的jar包已经包含在压缩文件中。然后,配置Compass连接到你的数据源和索引...

    compass.app

    Compass.app是一款基于Compass框架的图形用户界面应用,它为用户提供了一个直观的环境来管理和使用Compass。Compass是一个强大的CSS预处理器,而Sass是它的基础语言,两者结合可以极大地提高前端开发效率和代码可...

    Compass与Struts2SpringHibernate的整合示例

    1. 分布式索引:对于大型应用,可以考虑使用分布式Compass,将索引分散到多台服务器上,提高查询性能。 2. 索引优化:根据业务需求,合理选择字段进行分词、分析,以提高搜索精确度。 3. 使用缓存:Compass的缓存...

    Compass与ssh框架整合

    3. **创建索引**:使用Compass的API,根据业务需求选择何时创建或更新索引。这通常在数据插入、更新或删除时触发,确保搜索引擎中的数据与实际数据库保持同步。 4. **检索数据**:通过Compass的查询API执行全文搜索...

    ssh+compass实现站内搜索分页.rar

    通过以上步骤,你可以在SSH框架下成功集成Compass实现站内搜索分页。这一过程涉及到Java Web开发的多个层面,包括MVC架构、数据库操作、全文检索以及用户体验设计。熟练掌握这些技能将有助于构建高效且功能丰富的Web...

    Compass_Setup_2010-06-25_16-11.rar

    该版本可能包含了当时的最新功能更新或修复了一些已知问题,对于研究和使用Compass的历史发展轨迹具有参考价值。 GPS(全球定位系统)数据处理涉及到多个步骤,包括数据采集、预处理、坐标转换、误差校正等。...

    Android E-compass sensor 传感器 高级绘图

    为了实现E-compass的功能,我们需要进行以下步骤: 1. 获取SensorManager实例,注册E-compass传感器事件监听器。 2. 在SensorEventListener的`onSensorChanged()`方法中处理传感器事件,更新罗盘指针的角度和...

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

    该脚本可能包含数据表定义、初始数据填充等,这些都是在设置集成环境时必要的步骤。 整合Compass 2.0、Spring和Hibernate,首先需要配置Spring的ApplicationContext,定义数据源、Hibernate SessionFactory以及...

Global site tag (gtag.js) - Google Analytics