`

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics