`

Compass简单学习

阅读更多

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();
 }

 

分享到:
评论

相关推荐

    Lucene+compass学习资料

    Compass提供了元数据管理、动态索引更新、事务支持等特性,使得在复杂的应用场景下使用搜索引擎变得更加简单。 然后,我们探讨Ajax。Ajax并非一种单一的技术,而是一种使用JavaScript、XML、HTML和CSS等技术组合的...

    compass完整可用项目

    Compass提供了一种简单的方式来在Java应用程序中集成全文搜索功能,使得开发者可以方便地在数据库、文件系统等存储中的对象上进行高效的全文检索。 Lucene是Apache软件基金会的开源项目,它是一个高性能、全文本...

    mongodb安装包和compass

    安装Compass的步骤相对简单: 1. 访问Compass官网下载适用于你系统的版本。 2. 执行安装程序,按照提示完成安装。 3. 启动Compass应用程序,输入MongoDB服务器的连接信息,包括主机名、端口、用户名和密码。 4. 连接...

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

    本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...

    compass2简单例子

    通过这个 "compass2简单例子",你可以学习如何创建一个新的 Compass 项目,编辑 `config.rb` 文件,编写 Sass 代码,然后使用 Compass 命令编译成 CSS。同时,你还可以看到 Compass 如何简化 CSS 开发,特别是通过其...

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

    通过学习和实践Compass,开发者可以轻松地为Java应用程序添加强大的全文检索功能,提高用户体验,提升数据的可发现性。同时,Compass的灵活性和扩展性使其在各种场景下都能发挥重要作用,无论是小型项目还是大型企业...

    compass的几个入门网页

    3. 实践创建简单项目,应用Compass的功能来编写样式。 4. 阅读官方文档和在线教程,加深理解。 5. 参考其他开发者的工作,了解如何在实际项目中使用Compass。 总之,Compass为Web开发者提供了一个强大的工具,通过...

    compass-2.2.0.zip

    1. **搜索引擎API**:Compass提供了一个简单易用的API,使得开发者可以方便地进行索引创建、查询、更新和删除等操作。这个API比直接使用Lucene的API更加直观,减少了编写搜索引擎代码的工作量。 2. **对象-搜索引擎...

    Compass.rar

    Compass是一款基于Lucene的全文搜索引擎工具...通过这个工程,开发者可以学习如何在实际项目中集成和使用Compass,以提升应用的搜索性能。同时,这也是一个很好的学习资源,帮助理解全文搜索引擎的工作原理和应用方式。

    简单的compass示例源码

    这个压缩包中的"简单的compass示例源码"是为了帮助开发者理解如何在实际项目中使用Compass进行全文检索。 首先,`.classpath`和`.project`是Eclipse项目配置文件,它们定义了项目的类路径和构建设置。这表明这个...

    mongodb-compass-1.27.1-win32-x64.zip

    4. **索引管理**:创建、编辑和删除索引在Compass中变得简单。用户可以直观地看到哪些字段有索引,以及索引类型和性能影响。 5. **聚合管道**:MongoDB的聚合框架在Compass中也有可视化表示,使得处理和分析数据流...

    compass学习笔记

    《Compass学习笔记》 Compass,全称Sass Compass,是一个基于Sass的CSS框架,它为Web开发者提供了强大的工具和方法,简化了CSS的编写,使得样式表的组织更加有序,可维护性大大增强。Sass是CSS的预处理器,而...

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

    Compass是一款基于Lucene的全文搜索引擎库,它为Java应用程序提供了一个简单易用的接口,用于管理和执行全文搜索。在2.0版本中,Compass提供了更多优化和性能提升,以支持更复杂的应用场景。 Spring是一个广泛使用...

    基于Compass2.2与Spring 结合建立索引的实例

    该框架支持多种搜索引擎(如Elasticsearch, Solr等),使得开发人员能够在不深入学习特定搜索引擎的情况下,轻松地在其应用中集成高级的全文搜索功能。 #### 二、项目模型定义 在本文档的第一部分,展示了`...

    struts2+spring2.5+hibernate3.26+compass2.1搜索引擎简单实现(无jar包)

    在"struts2+spring2.5+hibernate3.26+compass2.1搜索引擎简单实现"这个项目中,首先你需要配置Struts2、Spring和Hibernate,确保它们能正常工作。这包括编写相应的配置文件(如struts.xml、spring-context.xml、...

    S2SH+compass (实现站内全文检索)

    Compass是一个基于Lucene的全文搜索引擎,它为Java应用程序提供了一个简单而强大的集成方式,使得应用可以方便地添加全文检索功能。Compass不仅包含了Lucene的核心功能,如索引创建、查询和优化,还额外提供了对JDBC...

    mongodb-compass-community-1.12.8-win32-x64.exe

    总的来说,MongoDB Compass是MongoDB用户不可或缺的工具,无论是在学习、开发还是日常运维过程中,都能极大地提升工作效率和体验。这个特定的版本号(1.12.8)意味着它包含了截至发布日期的所有已知修复和改进,确保...

    Compass+SSH搜索引擎简单项目

    【SSH+Compass搜索引擎简单项目】是一个基于Struts2(S),Hibernate(H)和Spring(S)的Java Web应用程序,结合了Compass搜索引擎库,用于实现对数据库中两个表的高效检索功能。这个项目旨在提供一个清晰易懂的...

Global site tag (gtag.js) - Google Analytics