`
kirk1127
  • 浏览: 28835 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate search 的小小笔记

阅读更多
近日需要做一下搜索的功能,之前就听说过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 In Action

    Hibernate Search是一个强大的库,它为Hibernate框架提供了全文搜索的功能。全文搜索是一种强大的信息检索方式,可以让用户通过关键词快速定位到存储在大量数据中的相关内容。Hibernate Search库将全文搜索与...

    hibernateSearch+demo

    这个“hibernateSearch+demo”项目提供了一个实战示例,帮助开发者理解并应用 Hibernate Search 的核心概念和功能。 在 Hibernate Search 中,主要涉及以下关键知识点: 1. **全文索引**:Hibernate Search 使用 ...

    Hibernate Search配置及简单应用

    **Hibernate Search配置及简单应用** Hibernate Search是Hibernate框架的一个扩展,它允许我们在应用程序中实现全文检索功能,使得数据库中的数据可以被快速、高效地搜索。这个功能尤其在处理大量文本数据时非常...

    hibernate Search in action

    《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...

    《深入浅出Hibernate》读书笔记

    总之,《深入浅出Hibernate》读书笔记涵盖了实体对象生命周期的转换、实体对象的识别机制以及Hibernate的多级缓存策略,这些都是理解并有效使用Hibernate的关键点。通过深入学习这些概念,开发者能够更好地掌握...

    hibernate的学习笔记,hibernate所以知识点全,一看就能上手

    hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...

    hibernate个人学习笔记完整版

    【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    hibernate search全文索引的创建及查询

    Hibernate Search是Hibernate ORM框架的一个扩展,它允许开发者在Java应用中实现全文搜索功能。这个工具结合了ORM的强大和Lucene搜索引擎的高效,使得数据库中的数据可以被快速、精准地检索。本文将深入探讨如何创建...

    hibernate初学者笔记

    关于hibernate的Session,向数据插入时的事务隔离级别,持久化对象的状态,对应关系的映射文件,表与表之间的多种映射关系,以及hibernate的二级缓存的笔记。

    Hibernate搜索框架HibernateSearch.zip

    Hibernate Search的作用是对数据库中的数据进行检索的。它是hibernate对著名的全文检索系统Lucene的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernate ...

    hibernate-search, Hibernate Search.zip

    hibernate-search, Hibernate Search Hibernate 搜索版本:5.8.0. Final - 13-09-2017描述针对Java对象的全文搜索这个项目提供 Hibernate ORM和全文索引服务( 如 Apache Lucene和 Elasticsearch

    基于Spring的Hibernate Search全文检索功能示例

    3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...

    hibernate-search-5.5.4 api docset for Dash

    Hibernate Search 是一个强大的全文搜索引擎框架,它将Apache Lucene库集成到Hibernate ORM中,使得在Java应用程序中实现复杂的全文检索和分析功能变得简单。这个"hibernate-search-5.5.4 api docset for Dash"是...

Global site tag (gtag.js) - Google Analytics