近日需要做一下搜索的功能,之前就听说过hibernate search,所以就决定采用这个。
实现了如下的功能,在多域中搜索关键字,并且在以id排序,满足一些状态值。
而且前台可以再次通过过滤器进行二次筛选。
还需要在以后扩展的是高亮显示关键字,还有分词好像没有实现,对象时间怎么关联起来还没找到相关事例资料。服务器重启会丢失索引文件,现在必须重启服务后手动索引。
//手动建索引
public void createHernateIndex() {
FullTextSession s = Search.createFullTextSession(getSession());
List<Product> products = find("from Product");
long startTime = new Date().getTime();
for (Product product : products) {
System.out.println("File " + product.getProTitle() + "正在被索引....");
s.index(product);
}
long endTime = new Date().getTime();
System.out.println("一共" + products.size() + ",这花费了"
+ (endTime - startTime) + " 毫秒来把文档增加到索引里面去!");
}
//搜索
public Page proQuery(String words,String cartype,String address,int pageNo, int pageSize) throws Exception {
FullTextSession s = Search.createFullTextSession(getSession());
// MultiFieldQueryParser parser = new MultiFieldQueryParser(
// new String[] { "proName" }, new StandardAnalyzer());
// Query luceneQuery = parser.parse(words);
// Query luceneQuery = MultiFieldQueryParser.parse(new
// String[]{words},new String[]{"proName","pro_state"},new
// StandardAnalyzer());
Query luceneQuery = MultiFieldQueryParser.parse(new String[] { words,
words,words }, new String[] { "proTitle", "proDescn","car_type" },
new BooleanClause.Occur[] { Occur.SHOULD, Occur.SHOULD,Occur.SHOULD },
new StandardAnalyzer());
FullTextQuery query = s.createFullTextQuery(luceneQuery, Product.class);
// 排序
Sort sort = new Sort(new SortField[] { new SortField("id",
SortField.INT, true) });
// 过滤1
QueryParser qp1 = new QueryParser("proStatus", new StandardAnalyzer());
Query fquery = qp1.parse("2");
// 过滤2
QueryParser qp2 = new QueryParser("pro_type", new StandardAnalyzer());
Query fquery2 = qp2.parse("3");
BooleanQuery bqf = new BooleanQuery();
bqf.add(fquery, BooleanClause.Occur.MUST);
bqf.add(fquery2, BooleanClause.Occur.MUST_NOT);
// 过滤3
if (!cartype.equalsIgnoreCase("")) {
QueryParser qp3 = new QueryParser("car_type",
new StandardAnalyzer());
Query fquery3 = qp3.parse(cartype);
bqf.add(fquery3, BooleanClause.Occur.MUST);
}
// 过滤4
if (!address.equalsIgnoreCase("")) {
QueryParser qp4 = new QueryParser("proOrigin",
new StandardAnalyzer());
Query fquery4 = qp4.parse(address);
bqf.add(fquery4, BooleanClause.Occur.MUST);
}
QueryFilter qf = new QueryFilter(bqf);
query.setSort(sort);
query.setFilter(qf);
long totalCount = query.list().size();
if (totalCount < 1)
return new Page();
int startIndex = Page.getStartOfPage(pageNo, pageSize);
List<Product> list = query.setFirstResult(startIndex).setMaxResults(
pageSize).list();
return new Page(startIndex, totalCount, pageSize, list);
}
分享到:
相关推荐
Hibernate Search是一个强大的库,它为Hibernate框架提供了全文搜索的功能。全文搜索是一种强大的信息检索方式,可以让用户通过关键词快速定位到存储在大量数据中的相关内容。Hibernate Search库将全文搜索与...
这个“hibernateSearch+demo”项目提供了一个实战示例,帮助开发者理解并应用 Hibernate Search 的核心概念和功能。 在 Hibernate Search 中,主要涉及以下关键知识点: 1. **全文索引**:Hibernate Search 使用 ...
**Hibernate Search配置及简单应用** Hibernate Search是Hibernate框架的一个扩展,它允许我们在应用程序中实现全文检索功能,使得数据库中的数据可以被快速、高效地搜索。这个功能尤其在处理大量文本数据时非常...
《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...
总之,《深入浅出Hibernate》读书笔记涵盖了实体对象生命周期的转换、实体对象的识别机制以及Hibernate的多级缓存策略,这些都是理解并有效使用Hibernate的关键点。通过深入学习这些概念,开发者能够更好地掌握...
hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...
【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
Hibernate Search是Hibernate ORM框架的一个扩展,它允许开发者在Java应用中实现全文搜索功能。这个工具结合了ORM的强大和Lucene搜索引擎的高效,使得数据库中的数据可以被快速、精准地检索。本文将深入探讨如何创建...
关于hibernate的Session,向数据插入时的事务隔离级别,持久化对象的状态,对应关系的映射文件,表与表之间的多种映射关系,以及hibernate的二级缓存的笔记。
Hibernate Search的作用是对数据库中的数据进行检索的。它是hibernate对著名的全文检索系统Lucene的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernate ...
hibernate-search, Hibernate Search Hibernate 搜索版本:5.8.0. Final - 13-09-2017描述针对Java对象的全文搜索这个项目提供 Hibernate ORM和全文索引服务( 如 Apache Lucene和 Elasticsearch
3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...
Hibernate Search 是一个强大的全文搜索引擎框架,它将Apache Lucene库集成到Hibernate ORM中,使得在Java应用程序中实现复杂的全文检索和分析功能变得简单。这个"hibernate-search-5.5.4 api docset for Dash"是...