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

hibernate search 学习笔记

阅读更多

1 使用hibernate search 时,当你的字段加入了索引,而进行搜索的时候去没搜索出来,那可能是你在实体字体里使用的分词器和作为搜索时使用的分词器不同所造成的,这个要注意一致性。还有一个就是就是可能你分词的时候将词变成乱码,

即由于对中文支持不好造成的,这个也会导致搜索的时候没找出来。


2 使用hibernate search 多字段查询可以如下方式:

StandardAnalyzer analyzer = new StandardAnalyzer();
			MultiFieldQueryParser parser = new MultiFieldQueryParser(//这个是用户输入的的搜索串在下面的field里进行搜索
					new String[] { "title","description","post_user_username" }, analyzer);
			parser.setDefaultOperator(QueryParser.OR_OPERATOR);
			BooleanQuery query = new BooleanQuery();
			query.add(parser.parse(content),BooleanClause.Occur.MUST);
			
			QueryParser parser2=new QueryParser("post_obj_objectID",analyzer);//从指定的ID里搜索,也就是首先在满足这个条件,再去搜索用户输入的查询串
			query.add(parser2.parse(objectPK) , BooleanClause.Occur.MUST);
			
			Query hibQuery = fullTextSession.createFullTextQuery(query,Posts.class);
 

 

使用MultiFieldQueryParser类来复合查询域,里面指定要搜索的field,这里是从"title","description",

"post_user_username"三个域里进行搜索,其中,post_user_username这个是在待搜索的实体Posts类里关联的

实体的一个索引域,也就是在Post实体里加入了@IndexedEmbedded(prefix="post_user_", depth=1)注解在关联

的实体(User user;)上,使得,可以从Post里去查询出它的user,那么只要在User实体里一个属性上面加入如下:

@Field(name = "username", index = Index.UN_TOKENIZED, store = Store.YES)形式的信息,便可完成跨

实体的查询。


3 使用FullTextQuery可以返回结果集,如下:

 

 

org.hibernate.search.FullTextQuery = hibQueryfullTextSession.createFullTextQuery(luceneQuery,Question.class);
int count = hibQuery.getResultSize();
 

 

这样就可以不用先获取一个list所有的对象信息后再求它的size,这样速度会快很多,因为不用对大量对象进行从数据库到的封装。



注:自己是在原来项目里接手做的,由于原来的项目里用的lucene版本比较低(用的是lucene2.4.1,hibernate search是3.1.1),所以有些方法和现在高版本的方法不同。

分享到:
评论

相关推荐

    struts1学习笔记.doc

    ### Struts1学习笔记知识点详解 #### 一、Struts1框架概述 Struts1是Apache Struts项目早期版本的MVC(Model-View-Controller)框架,它为Java Web应用提供了一种结构化和标准化的开发模式。Struts1通过将业务逻辑...

    Java架构学习笔记Xmind图.zip

    Java架构学习笔记Xmind图.zip是一个包含Java架构学习精华的压缩文件,其中很可能包含了详细的思维导图,用于梳理和组织Java开发中的各种架构概念和技术。这个压缩包可能旨在帮助Java开发者,尤其是初学者或进阶者更...

    尚硅谷springboot核心技术笔记

    总的来说,《尚硅谷springboot核心技术笔记》是一份全面的Spring Boot学习资源,无论你是初学者还是有一定经验的开发者,都能从中获得宝贵的指导,提升对Spring Boot的掌握程度。通过学习这份笔记,你将能够构建高效...

    ibatis学习笔记

    ### Ibatis学习笔记 #### 一、Ibatis优点 **A. 优点** 1. **SQL语句独立性**:Ibatis将SQL语句从Java源程序中抽离出来,放置于单独的XML文件中编写,这使得在后期对程序进行维护时变得更加便捷。 2. **简化开发...

    编程学习_笔记记录_Java面试_数据结构与算法_框架中间件_1741866775.zip

    在深入探讨编程学习笔记、Java面试技巧、数据结构与算法以及框架和中间件之前,首先要明确一个重要的基础——操作系统。操作系统作为管理计算机硬件与软件资源的系统软件,其原理与机制的理解是每一个计算机科学与...

    lucene笔记共38页.pdf.zip

    开发者可以结合Spring Data、Hibernate Search等框架轻松集成Lucene到Java应用中。 总的来说,《Lucene笔记共38页.pdf》是一份全面且深入的教程,适合希望掌握全文检索技术的开发者学习。通过这份笔记,读者不仅能...

    struts入门笔记

    - **Hibernate**:用于持久化操作,Struts 可以很好地与 Hibernate 集成,处理数据库交互。 - **Spring**:Spring 与 Struts 结合,可以提供更好的依赖注入和事务管理。 - **Tiles**:用于构建复杂的页面布局,...

    【java开发笔记指北】涵盖java、JVM、Spring、常用框架、中间件、数据库、数

    本篇《Java开发笔记指北》是一份全面的学习指南,它不仅覆盖了Java基础知识,还深入探讨了JVM内部机制、Spring框架、常用框架的应用、中间件技术、数据库操作以及数据结构与算法等关键知识点。 首先,让我们从Java...

    03 源码框架专题04.zip

    5. **集成第三方技术**:在"Spring Boot快速集成第三方技术详解"中,你可能会学到如何集成如MyBatis、Hibernate等ORM框架,Redis或Memcached作为缓存,Elasticsearch进行搜索,Docker容器化部署,以及Spring Cloud...

    基于Java的在线购物系统的设计与实现(源代码+系统)

    《基于Java的在线购物系统设计...通过理解上述文件结构和系统设计,开发者可以深入学习Java Web应用的开发流程,提升自己的编程技能。同时,这样的系统也为实际商业运营提供了基础,帮助商家实现高效、便捷的线上交易。

    虚拟大学核心

    日志记录和监控是任何复杂系统不可或缺的部分,项目可能使用Log4j、SLF4J和ELK Stack(Elasticsearch、Logstash、Kibana)或Prometheus+Grafana组合来进行日志收集和性能监控。 为了保证服务的高可用性,项目可能...

Global site tag (gtag.js) - Google Analytics