`
hz_chenwenbiao
  • 浏览: 1008046 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate search 组合搜索方式

阅读更多

使用hibernate search来搜索一个加入索引的信息时,可以组合多个搜索条件进行灵活搜索:

 

方式一:

package org.edu.scut.lab24.uam.dao.impl;

import java.util.List;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.edu.scut.lab24.uam.hibernate.Posts;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;

public class searchTest {

	/**
	 * 从多个字段里进行组合搜索
	 * @param objectPK
	 * 			必段首先满足的字段(如搜索一个社区的帖子,那先得满足这个帖子为所指定的社区的ID)搜索
	 * @param content
	 * 			其次满足的内容搜索
	 * @throws Exception
	 */
	//下面方法都是没有考虑自己开启事务,是建立在调用该方法会开启事务的基础上
	public void mySearch1(String objectPK , String content) throws Exception{
		
		FullTextSession fullTextSession = Search.createFullTextSession(getSession());//这个要从你的支持开启session的地方获取,如继承了HibernateDaoSupport的类里面就帮我们开启session的
		
		String[] properties = new String[] { "title", "description", "post_user_username" };//在字段"title", "description", "post_user_username"中进行搜索
		StandardAnalyzer analyzer = new StandardAnalyzer();
		MultiFieldQueryParser parser = new MultiFieldQueryParser(//MultiFieldQueryParser这样使用是表示一个查询条件在多个字段里进行查询
				// 这个是用户输入的的搜索串在下面的field里进行搜索
				properties,
				analyzer);
		parser.setDefaultOperator(QueryParser.OR_OPERATOR);
		BooleanQuery booleanQuery = new BooleanQuery();//用BooleanQuery来做搜索条件的组合,即多条件查询
		booleanQuery.add(parser.parse(content), BooleanClause.Occur.MUST);

		
		QueryParser parser2 = new QueryParser("post_obj_objectID", analyzer);// 从指定的ID里搜索,也就是首先在满足这个条件,再去搜索用户输入的查询串
		booleanQuery.add(parser2.parse(objectPK), BooleanClause.Occur.MUST);
		
		QueryParser parser3 = new QueryParser("isReply",analyzer);//第三个要满足的条件,还可以继续添加更多的条件
		booleanQuery.add(parser3.parse("0"),BooleanClause.Occur.MUST);
		
		FullTextQuery hibQuery = fullTextSession.createFullTextQuery(booleanQuery, Posts.class);
		System.out.println("搜索的结果数:" +  hibQuery.getResultSize());
		List result = hibQuery.list();//用这个方法可以返回所有搜索的结果对象
	}
}

 

方式二

public void mySearch2(String objectPK , String content){
		
		FullTextSession fullTextSession = Search.createFullTextSession(getSession());//这个要从你的支持开启session的地方获取,如继承了HibernateDaoSupport的类里面就帮我们开启session的
		String[] properties = new String[] { "post_obj_objectID", "title" , "isReply"};
		
		Query luceneQuery = MultiFieldQueryParser.parse(new String[] { objectPK,
				content , "0"}, properties,
				new BooleanClause.Occur[] { Occur.MUST, Occur.MUST,Occur.MUST},
				new StandardAnalyzer());//MultiFieldQueryParser这样使用是表示多个查询条件对应在多个字段里进行查询

		FullTextQuery hibQuery = fullTextSession.createFullTextQuery(luceneQuery,
				Posts.class);
		System.out.println("搜索的结果数:" +  hibQuery.getResultSize());
		List result = hibQuery.list();//用这个方法可以返回所有搜索的结果对象
	}

 方式三

 

分享到:
评论

相关推荐

    hibernate Search in action

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

    Hibernate Search in action (pdf && code)

    Hibernate Search是Hibernate ORM的一个扩展,它将全文搜索的功能集成到Java应用中,使得在大量数据中进行高效、精准的检索成为可能。 本书首先会介绍Hibernate Search的基本概念,包括什么是全文搜索引擎、如何与...

    hibernate search-3.4.0.Final-dist

    Hibernate Search,作为Hibernate ORM框架的一个强大扩展,为Java开发者提供了一种在持久化数据上进行全文搜索的能力。这个3.4.0.Final版本是Hibernate Search历史上的一个重要里程碑,它在功能、性能和稳定性上都...

    hibernate-search-5.5.1.Final-dist.zip

    Hibernate Search,作为Hibernate ORM的一个扩展,提供了在Java应用中进行全文搜索和复杂索引的能力。这个压缩包“hibernate-search-5.5.1.Final-dist.zip”包含了Hibernate Search 5.5.1.Final版本的所有组件,是...

    hibernate-search-5.1.1.Final-dist.zip

    Hibernate Search是基于Hibernate ORM的扩展,它提供了一种声明式的方式来索引和搜索数据库中的数据。通过使用这个库,开发者可以轻松地在数据库中执行全文搜索,同时享受到Hibernate带来的便捷性。5.1.1.Final是...

    hibernate-search-4.2.0.jar及说明pdf

    《Hibernate Search 4.2.0:全文搜索与对象关系映射的完美结合》 Hibernate Search是Hibernate ORM框架的一个扩展,它将强大的全文搜索引擎Lucene集成到Java应用程序中,允许开发者在数据库对象上进行复杂的全文...

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

    5. **查询API**:Hibernate Search提供了一套丰富的查询API,如`FullTextQuery`和`QueryBuilder`,可以创建布尔组合查询、模糊查询、短语查询等。例如,我们可以使用`keyword()`函数构建简单查询,或者用`match()`来...

    hibernate-search-3.4.0.Final--1.rar

    这个版本不仅包含了对Java Persistence API(JPA)的支持,还兼容传统的Hibernate ORM,使得开发者无论选择哪种持久化方式都能享受到全文搜索的便利。 2. **主要特性** - **全文索引**:Hibernate Search能够自动...

    \hibernate search in action.rar

    《Hibernate Search In Action》这本书是关于Java开发中Hibernate Search框架的深入指南,它涵盖了这个强大的全文搜索引擎集成工具的各个方面。Hibernate Search允许开发者在Java应用程序中实现高效、灵活的全文搜索...

    Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程

    Apache Shiro + SpringMVC + Hibernate Search + Hibernate + Bootstrap企业信息管理系统基础框架搭建整合实例代码教程,这是一个典型的Java Web开发中的技术栈组合,用于构建高效、安全的企业级信息系统。...

    Hibernate-Search

    Hibernate Search是Java世界中一款强大的全文搜索引擎,它是Hibernate ORM框架的一个扩展,能够将数据库中的数据转换为可搜索的索引,从而实现高效的全文搜索功能。在最新的版本3.3.0.Final中,Hibernate Search...

    hibernate-search-4.3.0.Final

    Hibernate Search是Hibernate ORM的一个扩展,它提供了一种在Java应用中实现全文搜索功能的方式,使得开发者能够轻松地在数据库中的数据上执行复杂的全文检索。4.3.0.Final是Hibernate Search的一个稳定版本,包含了...

    hibernate-search-4.1.0.CR2-dist

    《深入理解Hibernate Search 4.1.0.CR2:Java持久化搜索的革新》 Hibernate Search是Hibernate ORM框架的一个扩展,它将全文搜索引擎的功能引入到Java应用中,使得开发者能够轻松地在数据库中进行复杂的文本搜索。...

    hibernate-search-4.5.2.Final-dist.zip

    4. 高级查询:提供布尔组合查询、范围查询、近似查询等多种高级查询方式,如使用`BooleanQuery`、`NumericRangeQuery`等。 5. 排序和评分:可以基于各种因素(如相关性、距离等)对搜索结果进行排序和评分。 6. 分页...

    SSH整合hibernate完整jar包

    SSH整合Hibernate是一个常见的Java Web开发框架组合,它结合了Struts、Spring和Hibernate三大开源框架的优势,用于构建高效、灵活且可维护的Web应用程序。在这个整合中,Hibernate作为持久层框架,负责对象关系映射...

    hibernate-search

    Hibernate搜索描述全文搜索Java对象该项目提供了由Hibernate ORM管理的实体与诸如Apache Lucene和Elasticsearch之类的全文索引服务之间的同步。 它将自动将更改应用于索引,这是繁琐且容易出错的编码工作,同时使您...

    hibernate包

    `hibernate-search-orm.jar`提供了全文搜索功能,基于Lucene或其他搜索引擎;`hibernate-c3p0.jar`是集成C3P0连接池的模块,可以提高数据库连接的效率和管理。 这些jar包的组合使用,可以帮助开发者构建一个完整的...

    HiSInAction代码

    在实际应用中,Hibernate Search支持多种查询方式,包括简单的关键词匹配、布尔组合查询、模糊查询、范围查询等。此外,还可以通过`@Highlight`注解实现高亮显示搜索结果中的匹配部分,提高用户体验。 HSiA-1.0.0...

    Hibernate3.4.X 代码快速查询 实体更快 更方便

    - Hibernate Search提供了强大的全文搜索功能。 - 可以通过构建Lucene查询或Hibernate Search查询来实现复杂的查询需求。 #### 四、分析器(Analyzer) 1. **分析器定义**: - 分析器用于控制文本的解析和索引...

    详解Java的Hibernate框架中的搜索工具的运用

    在Java Web开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者能够以面向对象的方式处理数据。SSH(Struts、Spring、Hibernate)是经典的三大框架组合,其中Hibernate负责...

Global site tag (gtag.js) - Google Analytics