环境 lucene2.4 + compass2.2
1. xml 配置
a. compass.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<compass-core-config
xmlns="http://www.compass-project.org/schema/core-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.compass-project.org/schema/core-config
http://www.compass-project.org/schema/compass-core-config-2.2.xsd">
<compass name="default">
<!-- 连接信息 -->
<connection>
<file path="./index/" />
</connection>
<!-- 声明映射信息 -->
<mappings>
<class name="com.tieba.hibernate.domain.Article" />
</mappings>
<!-- 其他配置 -->
<settings>
<!-- 配置分词器, 指定所用的分词器的全限定类名 -->
<setting name="compass.engine.analyzer.default.type" value="jeasy.analysis.MMAnalyzer" />
<!-- 指定摘要的文本长度 -->
<setting name="compass.engine.highlighter.default.fragmenter.simple.size" value="50" />
<!-- 配置高亮效果的前缀 -->
<setting name="compass.engine.highlighter.default.formatter.simple.pre" value="<span style='color:red'>" />
<!-- 配置高亮效果的后缀 -->
<setting name="compass.engine.highlighter.default.formatter.simple.post" value="</span>" />
</settings>
</compass>
</compass-core-config>
b. CRUD操作
import java.util.ArrayList;
import java.util.List;
import org.compass.core.Compass;
import org.compass.core.CompassHits;
import org.compass.core.CompassSession;
import org.compass.core.CompassTransaction;
import org.compass.core.config.CompassConfiguration;
import com.tieba.hibernate.domain.Article;
public class ArticleIndexDao {
private Compass compassSessionFactory;
public ArticleIndexDao(){
/* 1. 编程的方式
CompassConfiguration cfg = new CompassConfiguration();
cfg.setConnection("./index");// 连接信息
cfg.addClass(Article.class);// 声明映射信息
// cfg.setSetting("key", "value");//其他配置
// 配置分词器 // 指定所用的分词器的全限定类名
cfg.setSetting("compass.engine.analyzer.default.type", "jeasy.analysis.MMAnalyzer");
// 指定摘要的文本长度
cfg.setSetting("compass.engine.highlighter.default.fragmenter.simple.size", "50");
// 配置高亮效果的前缀
cfg.setSetting("compass.engine.highlighter.default.formatter.simple.pre", "<span style='color: red'>");
// 配置高亮效果的后缀
cfg.setSetting("compass.engine.highlighter.default.formatter.simple.post", "</span>");
compassSessionFactory = cfg.buildCompass();*/
// 2. xml配置文件方式
CompassConfiguration cfg = new CompassConfiguration().configure();
compassSessionFactory = cfg.buildCompass();
}
/**
* 保存索引
* @param article 文章
*/
public void save(Article article){
// 得到CompassSession
CompassSession session = compassSessionFactory.openSession();
CompassTransaction tx = null;
try {
tx = session.beginTransaction();
session.save(article);
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}
}
/**
* 删除索引
* @param id
*/
public void delete(Long id){
CompassSession session = compassSessionFactory.openSession();
CompassTransaction tx = null;
try {
tx = session.beginTransaction();
session.delete(Article.class, id);
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
}
/**
* 搜索
* @param quertyString 关键词
* @return
*/
public List<Article> find(String quertyString){
CompassSession session = compassSessionFactory.openSession();
CompassTransaction tx = null;
CompassHits hits = null;
List<Article> list = new ArrayList<Article>();
try {
tx = session.beginTransaction();
hits = session.find(quertyString);
for (int i = 0; i < hits.length(); i++) {
Article article = (Article) hits.data(i);
// ====================================== 使用高亮器
// 如果在高亮的属性值中没有出现关键词,就返回null
String title = hits.highlighter(i).fragment("title");
String content = hits.highlighter(i).fragment("content");
if (title != null) {
article.setTitle(title);
}
if (content != null) {
article.setContent(content);
}
list.add(article);
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return list;
}
}
分享到:
相关推荐
《深入探索Lucene+Compass技术与Ajax应用》 在当今的互联网开发中,数据检索和实时交互性已经成为不可或缺的功能。Lucene作为一个强大的全文搜索引擎库,为开发者提供了高效的文本搜索能力;Compass作为Lucene的一...
标题中的“Lucene+compass+spring+jdbc+庖丁的一个例子”揭示了这是一个关于整合多个技术来构建一个搜索系统的示例。在这个系统中,我们有以下几个关键组件: 1. **Lucene**: Apache Lucene 是一个高性能、全文本...
Struts、Hibernate、Spring、JPA、Lucene、JBPM和Compass是Java开发中常用的一系列技术,它们各自在不同的领域发挥着重要作用。这里我们将深入探讨这些技术以及如何将它们整合在一起进行配置。 1. **Struts**:...
struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0 包含所有jar包,按readme.txt导入并运行即可 开始不用分了................
Compass不仅包含了Lucene的核心功能,如索引创建、查询和优化,还额外提供了对JDBC、JPA等持久化技术的支持,可以直接对关系数据库中的数据进行全文检索。 在描述中提到的博客链接(已省略)可能详细解释了如何将这...
Compass是一个基于Lucene的全文搜索引擎库,它简化了在Java应用中集成全文检索的功能。本教程将重点讲解如何使用SSH框架与Compass结合,实现在网站内的搜索分页功能。 首先,让我们深入了解SSH框架的每个组件: 1....
Compass是一款基于Lucene的全文搜索引擎,它使得Java应用能够方便地集成全文搜索功能。Compass提供了对JDBC、Hibernate等数据源的直接支持,可以自动索引数据库中的数据,实现快速检索。 在"struts2+spring2.5+...
本资源是struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0整合实例,可以为初学入门者,提供个参考,本人也是网上找的,感觉很不错(因其中所用的jar文件太大,无法上传,大家可以自己添加各框架...
Compass 是一个基于 Lucene 的全文检索框架,它提供了一种高级的、面向对象的方式来管理和集成搜索引擎到你的应用程序中。在“compass2.1.4包”中,包含了 Compass 框架的版本 2.1.4,这个版本可能包含了性能优化、...
Compass 和 Lucene 是两个在 Java 开发环境中广泛使用的全文搜索引擎工具。它们可以帮助开发者构建高效、强大的文本搜索功能。本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,...
**Compass2.1** 是一个开源的全文搜索引擎,它基于Lucene,提供了与ORM框架(如Hibernate)的集成。Compass能够自动索引和搜索持久化对象,使得在Web应用中实现高效的数据检索变得简单。它支持实时索引更新,对...
《Compass+Lucene:构建高效全文搜索引擎》 在信息技术高速发展的今天,数据量的爆炸式增长使得传统的数据库查询方式面临着挑战。此时,全文搜索引擎以其快速、高效的特性,成为了处理大量非结构化文本数据的首选...
Struts2是一个流行的MVC框架,Spring是核心的依赖注入框架,Hibernate是ORM(对象关系映射)解决方案,而Compass则是一个基于Lucene的全文搜索引擎库,专门用于Java应用。接下来,我们将深入探讨这些组件以及它们...
Compass是一个全文搜索引擎库,它是Lucene的包装器,使得在Java应用程序中集成搜索引擎变得简单。Compass2.2引入了对Spring的深度集成,可以无缝地与Hibernate配合工作,实现实时索引和检索。它使得在应用程序中添加...
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。 ... 下面是compass在spring中的简明配
在实际应用中,`compass+lucene`的组合使得开发者可以轻松地在Java应用中添加全文搜索功能,而无需深入了解搜索引擎的复杂细节。通过 Compass 的 ORM 集成,开发者可以直接在存储在数据库中的对象上执行全文搜索,这...