Compass是在lucene API上封装了一层,意义在于更简洁方便的使用lucene。如hibernate操作对象般轻松。简单的几行代码便能轻松建立索引
public static void IndexCreate() {
CompassConfiguration config = new CompassConfiguration().configure(
"/org/compass/sample/library/compass.cfg.xml").addClass(
Author.class).addClass(Article.class).addClass(Book.class);
Compass compass = config.buildCompass();
CompassSession session = compass.openSession();
CompassTransaction compassTransaction = session.beginTransaction();
Calendar c = Calendar.getInstance();
c.set(1986, 12, 14);
Author a1 = new Author();
a1.setKeywords(new String[] { "喜剧", "小说" });
a1.setBirthdate(c.getTime());
a1.setId(new Long(3));
a1.setName(new Name("先生", "张", "三"));
a1.setHeight(168);
Book book1 = new Book();
book1.setId(new Long(4));
book1.setKeywords(new String[] { "贪污", "低俗" });
c.set(2000, 04, 1);
book1.setPublishDate(c.getTime());
book1.setTitle("社会主义的悲哀");
book1.setSummary("测试");
book1.setMoney(100);
a1.addBook(book1);
session.save(book1);
Book book2 = new Book();
book2.setId(new Long(5));
book2.setKeywords(new String[] { "测试1", "测试2" });
c.set(2005, 03, 1);
book2.setPublishDate(c.getTime());
book2.setTitle("测试");
book2.setSummary("查出");
book2.setMoney(50);
a1.addBook(book2);
session.save(book2);
Book book3 = new Book();
book3.setId(new Long(1));
book3.setKeywords(new String[] { "许宗衡", "官场" });
c.set(2008, 03, 1);
book3.setPublishDate(c.getTime());
book3.setTitle("悲剧");
book3.setSummary("贪污受贿案");
book3.setMoney(300);
a1.addBook(book3);
session.save(book3);
c.set(2010, 03, 1);
Article at1 = new Article();
at1.setKeywords(new String[] { "贪污", "受贿" });
at1.setContent("河北省李四贪污");
at1.setSummary("李四贪污");
at1.setPublishDate(c.getTime());
at1.setTitle("李四贪污被抓");
Article at2 = new Article();
at2.setKeywords(new String[] { "aa", "bb" });
at2.setContent("cc");
at2.setSummary("dd");
at2.setPublishDate(c.getTime());
at2.setTitle("ee");
List<Article> articles = new ArrayList<Article>();
articles.add(at1);
articles.add(at2);
a1.setArticles(articles);
session.save(a1);
compassTransaction.commit();
session.close();
}
public static void reTreive() {
CompassConfiguration config = new CompassConfiguration().configure(
"/org/compass/sample/library/compass.cfg.xml").addClass(
Author.class).addClass(Article.class).addClass(Book.class);
Compass compass = config.buildCompass();
Calendar c = Calendar.getInstance();
Calendar c1 = Calendar.getInstance();
CompassSearchSession session = compass.openSearchSession();
CompassHits hits = session.find("贪污");
c.set(2019, 1, 1);
c1.set(1990, 12, 1);
CompassQueryBuilder compassQueryBuilder = session.queryBuilder();
CompassQuery allpropertyQuery = compassQueryBuilder.queryString(
"贪污").toQuery();
CompassQuery cquery = compassQueryBuilder.between("author.height", 30,
1000, true);
System.out.println("->" + cquery.toString());
CompassBooleanQueryBuilder CQB = compassQueryBuilder.bool().addMust(
cquery).addMust(allpropertyQuery);
System.out.println(CQB.toQuery().toString());
// CompassHits hitsc = compassQueryBuilder.bool().addMust(
// cquery).toQuery().hits();
//
// CompassQuery dateRangeQuery = compassQueryBuilder.between(
// "publishTime", DateFormatUtils.format(start,
// "YYYY-MM-dd"), DateFormatUtils.format(
// end, "YYYY-MM-dd"), true);
CompassHits hitsc = CQB.toQuery().hits();
System.out.println("---->" + hitsc.length());
for (int i = 0; i < hitsc.length(); i++) {
CompassHit hit = hits.hit(i);
if (hit.getAlias().equals("author")) {
Author a = (Author) hit.getData();
System.out.println("" + a.getName());
List<Article> arts = a.getArticles();
for (Article article : arts) {
System.out.println("文章标题=" + article.getTitle());
}
}
if (hit.getAlias().equals("book")) {
Book a = (Book) hit.getData();
System.out.println("" + a.getTitle());
}
}
// int lenth = hits.getLength();
// System.out.println("---->查寻到=" + lenth + "个");
// for (int i = 0; i < lenth; i++) {
// CompassHit hit = hits.hit(i);
// if (hit.getAlias().equals("author")) {
// Author a = (Author) hit.getData();
// System.out.println("" + a.getName());
// List<Article> arts=a.getArticles();
// for (Article article : arts) {
// System.out.println("文章标题="+article.getTitle());
// }
// }
// if (hit.getAlias().equals("book")) {
// Book a = (Book) hit.getData();
// System.out.println("" + a.getTitle());
// }
//
// }
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
IndexCreate();
reTreive();
}
分享到:
相关推荐
Compass提供了元数据管理、动态索引更新、事务支持等特性,使得在复杂的应用场景下使用搜索引擎变得更加简单。 然后,我们探讨Ajax。Ajax并非一种单一的技术,而是一种使用JavaScript、XML、HTML和CSS等技术组合的...
Compass提供了一种简单的方式来在Java应用程序中集成全文搜索功能,使得开发者可以方便地在数据库、文件系统等存储中的对象上进行高效的全文检索。 Lucene是Apache软件基金会的开源项目,它是一个高性能、全文本...
安装Compass的步骤相对简单: 1. 访问Compass官网下载适用于你系统的版本。 2. 执行安装程序,按照提示完成安装。 3. 启动Compass应用程序,输入MongoDB服务器的连接信息,包括主机名、端口、用户名和密码。 4. 连接...
本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...
通过这个 "compass2简单例子",你可以学习如何创建一个新的 Compass 项目,编辑 `config.rb` 文件,编写 Sass 代码,然后使用 Compass 命令编译成 CSS。同时,你还可以看到 Compass 如何简化 CSS 开发,特别是通过其...
通过学习和实践Compass,开发者可以轻松地为Java应用程序添加强大的全文检索功能,提高用户体验,提升数据的可发现性。同时,Compass的灵活性和扩展性使其在各种场景下都能发挥重要作用,无论是小型项目还是大型企业...
3. 实践创建简单项目,应用Compass的功能来编写样式。 4. 阅读官方文档和在线教程,加深理解。 5. 参考其他开发者的工作,了解如何在实际项目中使用Compass。 总之,Compass为Web开发者提供了一个强大的工具,通过...
1. **搜索引擎API**:Compass提供了一个简单易用的API,使得开发者可以方便地进行索引创建、查询、更新和删除等操作。这个API比直接使用Lucene的API更加直观,减少了编写搜索引擎代码的工作量。 2. **对象-搜索引擎...
Compass是一款基于Lucene的全文搜索引擎工具...通过这个工程,开发者可以学习如何在实际项目中集成和使用Compass,以提升应用的搜索性能。同时,这也是一个很好的学习资源,帮助理解全文搜索引擎的工作原理和应用方式。
这个压缩包中的"简单的compass示例源码"是为了帮助开发者理解如何在实际项目中使用Compass进行全文检索。 首先,`.classpath`和`.project`是Eclipse项目配置文件,它们定义了项目的类路径和构建设置。这表明这个...
4. **索引管理**:创建、编辑和删除索引在Compass中变得简单。用户可以直观地看到哪些字段有索引,以及索引类型和性能影响。 5. **聚合管道**:MongoDB的聚合框架在Compass中也有可视化表示,使得处理和分析数据流...
《Compass学习笔记》 Compass,全称Sass Compass,是一个基于Sass的CSS框架,它为Web开发者提供了强大的工具和方法,简化了CSS的编写,使得样式表的组织更加有序,可维护性大大增强。Sass是CSS的预处理器,而...
Compass是一款基于Lucene的全文搜索引擎库,它为Java应用程序提供了一个简单易用的接口,用于管理和执行全文搜索。在2.0版本中,Compass提供了更多优化和性能提升,以支持更复杂的应用场景。 Spring是一个广泛使用...
该框架支持多种搜索引擎(如Elasticsearch, Solr等),使得开发人员能够在不深入学习特定搜索引擎的情况下,轻松地在其应用中集成高级的全文搜索功能。 #### 二、项目模型定义 在本文档的第一部分,展示了`...
在"struts2+spring2.5+hibernate3.26+compass2.1搜索引擎简单实现"这个项目中,首先你需要配置Struts2、Spring和Hibernate,确保它们能正常工作。这包括编写相应的配置文件(如struts.xml、spring-context.xml、...
Compass是一个基于Lucene的全文搜索引擎,它为Java应用程序提供了一个简单而强大的集成方式,使得应用可以方便地添加全文检索功能。Compass不仅包含了Lucene的核心功能,如索引创建、查询和优化,还额外提供了对JDBC...
总的来说,MongoDB Compass是MongoDB用户不可或缺的工具,无论是在学习、开发还是日常运维过程中,都能极大地提升工作效率和体验。这个特定的版本号(1.12.8)意味着它包含了截至发布日期的所有已知修复和改进,确保...
【SSH+Compass搜索引擎简单项目】是一个基于Struts2(S),Hibernate(H)和Spring(S)的Java Web应用程序,结合了Compass搜索引擎库,用于实现对数据库中两个表的高效检索功能。这个项目旨在提供一个清晰易懂的...