- 浏览: 248363 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
javatozhang:
讲解的的确不错。很实用。
Hibernate数据拦截与事件监听 -
sjx19871109:
更正一个地方:<event type="pos ...
Hibernate search -
xifan:
你好,楼主。
mutable="false 好像是 ...
Hibernate持久化对象生命周期 -
leo_cao:
很好,很实用
Hibernate数据拦截与事件监听 -
fehly:
47816778 写道你这样不会出现number 的精度问题吗 ...
Hibernate Annotations
搜索引擎
全文搜索引擎
全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的百度搜索。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的网页抓取、索引、检索系统(Indexer),有独立的“蜘蛛”(Spider)程序、或爬虫(Crawler)、或“机器人”(Robot)程序(这三种称法意义相同),能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和百度就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎。
目录索引
目录索引虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。用户完全可以按照分类目录找到所需要的信息,不依靠关键词(Keywords)进行查询。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo、新浪分类目录搜索。
元搜索引擎(META Search Engine)接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。
全文搜索引擎的基本原理
具体再详细的概念参照baidu吧 搜索引擎
lucenne
java领域的全文搜索的工具包lucene不仅可以对文本数据进行搜索,还可以对html,excel和pdf等格式的文件建立索引并且进行搜索。
Hibernate search底层使用的就是 lucene。
--------------------------------------------------------------------------------------------------------------------------------
上述都属于概念
Hibernate Search特点
支持索引数据的自动更新
支持众多的搜索方式,使用关键词进行搜索,也可以使用通配符进行搜索,还可以使用近似或者同义词进行搜索
支持搜索集群
支持对Lucene API直接的调用
Hibernate Search的类库
hibernate-search.jar
lucene-core.jar
hibernate-commons-annotations.jar
需要修改Hibernate.cfg.xml配置使用Hibernate Search
<property name="hibernate.search.default.directory_provider"> org.hibernate.search.store.FSDirectoryProvider </property> <property name="hibernate.search.default.indexBase"> D:/temp/index </property> <mapping resource="com/rbh/examples/Guestbook.hbm.xml" /> <event type="post-update"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event> <event type="post-insert"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event> <event type="post-delete"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event> <event type="post-collection-recreate"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event> <event type="post-collection-remove"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event> <event type="post-collection-update"> <listener class="org.hibernate.search.event.FullTextIndexEventListener" /> </event>
修改持久化类,使用注解配置全文索引
@Indexed public class Guestbook implements java.io.Serializable { ............. @DocumentId //表示这个对象的主键 public Integer getId() { return this.id; } @Field(store = Store.YES) public String getName() { return this.name; } ............... }
对持久化对象建立索引
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); session.getTransaction().begin(); FullTextSession ftSession = org.hibernate.search.Search.getFullTextSession(session); List<Guestbook> guestbooks = session.createQuery("from Guestbook").list(); for (Guestbook gb : guestbooks) { ftSession.index(gb); } ftSession.getTransaction().commit();
搜索全文索引后的持久化对象
QueryParser parser = new QueryParser("title", new StandardAnalyzer()); org.apache.lucene.search.Query luceneQuery = null; try { luceneQuery = parser.parse("title:test"); // build Lucene query } catch (ParseException e) { e.printStackTrace(); } Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); session.getTransaction().begin(); FullTextSession ftSession = org.hibernate.search.Search.getFullTextSession(session); org.hibernate.Query query = ftSession.createFullTextQuery(luceneQuery, Guestbook.class); query.setMaxResults(20); query.setFirstResult(0); List<Guestbook> guestbooks = query.list(); for (Guestbook gb : guestbooks) { printGuestbook(gb); } ftSession.getTransaction().commit();
使用luke工具,查看索引数据
Luke是一款显示Lucene索引数据、修改Lucene索引数据和进行模拟搜索的开源工具
注意:现在版本为luke-src-0.9.9,下载后也为lukeall0.9.9.jar cmd下无法运行lukeall0.9.9.jar 改名为lukeall.jar,运行java -jar lukeall.jar 即可
中文分词
把中文的句子切分成有意义的词,这就是中文分词
中文分词的基本机制
一种使用词库匹配
另一种使用自动切分算法
词库切分与自动切分的比较
Hibernate Search 使用第三方的中文分词组件
"庖丁解牛"分词组件-------下载地址http://code.google.com/p/paoding/
配置"庖丁解牛"分词组件
新建paoding-dic-home.properties,文件添加
paoding.dic.home=D:/hibernate_test/paoding-analysis-2.0.4-beta/dic
修改持久化类中注解
...... @Indexed @Analyzer(impl = net.paoding.analysis.analyzer.PaodingAnalyzer.class) public class Guestbook implements java.io.Serializable { ....... }
评论
<event type="post-collection-recreate">
<listener class="org.hibernate.search.event.FullTextIndexEventListener" />
</event>
这里listener类应该是org.hibernate.search.event.FullTextIndexCollectionEventListener,否则会报错
发表评论
-
Hibernate与Struts2,Spring
2010-04-25 19:23 1544Struts2 框架 Struts是Apache ... -
Hibernate Annotations
2010-04-21 14:54 7009在过去几年里,Hibernate不断发展,几乎成为Jav ... -
Hibernate性能优化
2010-04-20 16:25 1388使用dynamic-insert与dynamic-update ... -
Hibernate的缓存
2010-04-19 19:47 2024持久层缓存的级别 事务级别的缓存 应用(进程)级别的缓存 ... -
Hibernate数据拦截与事件监听
2010-04-17 19:33 6515拦截器(Interceptor)org.hibernate.I ... -
Hibernate过滤器
2010-04-16 17:31 1488Hibernate过滤器的概念 Hibernate过滤器类 ... -
Hibernate继承映射
2010-04-15 19:48 1015继承映射 3种方式,继承关系映射到数据库的表中 1.继承关 ... -
Hibernate的事务管理
2010-04-14 20:00 1317数据库事务数据库的事务指的是把一系列的数据库操作组成一个单元, ... -
Native SQL查询
2010-04-13 23:15 1217HQL写的有点累有些东西 ... -
HQL查询
2010-04-13 20:46 1527Query接口Query类型与org.hibernate.Cr ... -
Criteria查询
2010-04-12 18:42 12382Hibernate的三种查询方式 1.HQL (Hibern ... -
映射多对多关联关系
2010-04-10 15:19 1364多对多单向关联 使用多对多关联,需要借助一个起中介作用的连接 ... -
映射一对一关联关系
2010-04-09 21:08 976共享主键关系 两个关联表使用相同的主键值 类: ... -
Hibernate映射多对一关联关系
2010-04-08 15:03 1448多对一的单向关联 表于表的关联可以分为一对一,一对多,多对一 ... -
Hibernate组件映射
2010-04-07 16:03 5227组件Components 除了粗粒度的对象模型设计(一个表 ... -
Hibernate的集合映射
2010-04-06 15:31 1237Set 接口 set类型的对象,被加入的对象不能重复, ... -
浅谈OSIV与泛型DAO模式
2010-04-05 22:13 3594open session in view 简称 O ... -
java.lang.NoClassDefFoundError: org/hibernate/Session的异常
2010-03-22 15:15 7104今天写程序突然报这个错误,挺郁闷的,因为这个包是导入别人的(事 ... -
Hibernate持久化对象生命周期
2010-03-19 14:41 2332持久化对象生命周期 Persisten ... -
Hibernate标示符属性的生成策略
2010-03-18 16:53 1501标示符属性 Hibernate中的标示符属性,也可以称为Hi ...
相关推荐
Hibernate Search是Hibernate ORM框架的一个扩展,它允许开发者在Java应用中实现全文搜索功能。这个工具结合了ORM的强大和Lucene搜索引擎的高效,使得数据库中的数据可以被快速、精准地检索。本文将深入探讨如何创建...
Hibernate Search是一个强大的库,它为Hibernate框架提供了全文搜索的功能。全文搜索是一种强大的信息检索方式,可以让用户通过关键词快速定位到存储在大量数据中的相关内容。Hibernate Search库将全文搜索与...
这个“hibernateSearch+demo”项目提供了一个实战示例,帮助开发者理解并应用 Hibernate Search 的核心概念和功能。 在 Hibernate Search 中,主要涉及以下关键知识点: 1. **全文索引**:Hibernate Search 使用 ...
《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...
**Hibernate Search配置及简单应用** Hibernate Search是Hibernate框架的一个扩展,它允许我们在应用程序中实现全文检索功能,使得数据库中的数据可以被快速、高效地搜索。这个功能尤其在处理大量文本数据时非常...
3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...
《Hibernate Search in Action》是一本深入探讨Hibernate Search技术的专业书籍,配合源代码一同学习,能够帮助读者更好地理解和应用这项强大的全文检索和分析框架。Hibernate Search是Hibernate ORM的一个扩展,它...
使用hibernate search实现全文检索和文档管理功能: 1 全文检索 2 手动生成索引 3 文档上传(自动建立索引) 4 文档更新(自动建立索引) 5 文档删除 使用说明: 1 需要先恢复数据库 searchDB_2008sqlserver.bak 2 ...
本资源提供了基于Hibernate Search实现的全文搜索引擎的完整代码和配置文件,适用于处理中英文数据,具备拼音搜索、错误纠正和搜索建议等高级功能。 Hibernate Search是Hibernate ORM的一个扩展,它允许开发者在...
hibernate-search, Hibernate Search Hibernate 搜索版本:5.8.0. Final - 13-09-2017描述针对Java对象的全文搜索这个项目提供 Hibernate ORM和全文索引服务( 如 Apache Lucene和 Elasticsearch
Hibernate Search 4.4.0.Final API 帮助文档
Hibernate Search的作用是对数据库中的数据进行检索的。它是hibernate对著名的全文检索系统Lucene的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernate ...
压缩包包括项目完整代码,详细说明和项目结构图,效果图 项目实现了分页和高亮显示 MAVEN项目:HibernateSearchDemo IDE :MyEclipse jdk :1.6 数据库 :MySql ...hibernate search 版本 4.4.1.Final
《Hibernate Search in Action》这本书是关于Java开发中利用Hibernate Search框架进行全文检索的权威指南。Hibernate Search是一个在Hibernate ORM之上构建的搜索引擎,它允许开发者在Java应用中实现强大的、数据库...
《Hibernate Search 3.4.0.Final:深入探索企业级数据检索的利器》 Hibernate Search,作为Hibernate ORM框架的一个强大扩展,为Java开发者提供了一种在持久化数据上进行全文搜索的能力。这个3.4.0.Final版本是...
标题与描述:“Getting Started with Hibernate Search” 在深入探讨前,我们先来理解“Hibernate Search”这一概念。Hibernate Search是Hibernate框架的一个扩展,它为持久化的领域模型提供了全文搜索查询的能力,...