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是一个示例android应用程序,实现了简单的指南针功能。 它是在我的某些项目中作为代码片段重用而创建的。 指南针的主要特征是噪声过滤器(低通滤波器),与其他类似的箭头总是颤抖的应用相比,它使箭头更稳定...
一个简单的指南针应用程序,仅使用react-native构建,仅用于学习目的。 世博版可以在找到。 该项目总体上是任何试图在本机中使用传感器/磁力计的人的示例。 描述 一个非常简单的演示,说明如何使用设备的内置...
它还汇集了对语义和可访问性的关注,因此有一个简单而有用的索引文件,其中包含一些WAI-ARIA角色和标记来帮助您开始学习。 在说样式表时,您会注意到lt IE9和gt IE8的条件。 该项目的工作方式是为旧版浏览器生成两...
a simple project using nodejs一个简单的node项目1. 后端使用node的express框架,数据库使用的是NoSQL;2. 前端使用seajs、sass、jade页面模版引擎使用的是jade页面js都遵循CMD规范模块化,使用grunt编译压缩页面的...
theme主题ExtJs4引入了全新的主题系统,采用Sass和Compass技术,提供了标准的主题模板,通过对主题模板的简单定制就可以创造出丰富多彩的各种主题。Sass和Compass概述SassSass样式表语言是CSS的一个扩展,为CSS提供...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...
bootstrap 的学习非常简单,并且它所提供的样式又非常精美。只要稍微简单的学习就可以制作出漂亮的页面。 bootstrap提供了三种类型的下载: 1、用于生产环境的 Bootstrap 编译并压缩后的 CSS、JavaScript 和...
一个简单的线性回归机器学习程序,用Python 3.4编写 依存关系 numpy: ://www.numpy.org/ Docopt: : 如果按照“安装”下的说明进行操作,则不必手动安装。 安装 获取此存储库中的文件。 例如:git clone 在命令...
帮助前端同学学习算法和数据结构的兴趣,喜欢上这种刷题的学习模式; 提供大部分译文的解题思路; 对于刚开始接触LeetCode的同学,我建议: 一刷:按照算法或数据结构的分类,从Easy到Medium刷一遍,这样可以帮助您...
德语词汇 一个基于Duolingo课程学习德语词汇的简单应用程序
MindsDB是一个针对Pytorch之上的开发...尝试安装MindsDB从示例中学习MindsDB可解释性GUI常见问题提供反馈以改进MindsDB安装桌面:如果您已经安装了python环境,则可以在一分钟内在自己的计算机上使用MindsDB,只需运行
- 一个完整的 Lisp 学习环境 ... 它将 Lisp 归结为它干净、简单的本质。 计算机程序的结构和解释同样将编程归结为其本质……然后将其构建为成熟的 Lisp 解释器和编译器。 没错,你可以通过在 Lisp 中实现 L
leetcode中国 :tangerine: 力码 我的 LeetCode 练习记录。 ...:compass: 目录 二分搜索算法 题目 难度 解法 简单的 简单的 简单的 简单的 简单的 简单的 简单的 :open_book: 学习资料(中文) 算法
注意:尽管使用简单,但稳定基线 (SB) 假定您对强化学习 (RL) 有一定的了解。 你不应该在没有练习的情况下使用这个库。 在这个程度上,我们在文档中提供了很好的资源来开始使用 RL。 与 OpenAI Baselines 的主要...
简易协议 “ EasyAgreement-IGES”是原始“ EasyAgreement”的副本。该项目用于软件工程,管理和演进考试。最初的设计是项目,旨在作为一个在线平台,旨在简化学生,学术导师和外部导师之间关于学习协议文件的编写和...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...