全文检索技术调研

全文检索

全文检索的技术有很多,由于软件使用数据库种类的不确定性,所以抛弃了在数据库上做全文检索的念头。那么,接下来就需要找一个能替代db进行全文检索的框架了。

Lucene

是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。(取自百度百科)。
它可能是最流行的单页面或者单机程序所使用的搜索框架,但是其索引文件的安全性和与DB数据的同步性是一个令人头大的问题。还需要开发人员去手动管理索引与DB的一致性。

ealsticsearch和solr

这两个是基于lucene开发的企业级搜索应用服务器,两者都有各自的有点,这里不再赘述,因为本人需要搜索功能的是一个单机应用,没有百万级的数据,感觉有点大材小用。

Compass(指南针)

由于网上的各种程序对这个名字情有独钟,导致它很难出现在百度的第一页,但是不能否定它是一个很优秀的搜索框架,它依靠Lucene,与hibernate结合,Compass的目标是:把java应用简单集成到搜索引擎中.编码更少,查找数据更便捷。但是长久不更新。

hibernate-search

Hibernate Search是在apache Lucene的基础上建立的主要用于Hibernate的持久化模型的全文检索工具。像Lucene这样的检索引擎能够给我们的项目在进行检索的时候带来非常高的效率,但是它们在基本对象的检索时会有一些问题,比如不能实现检索内容跟实体的转换,Hibernate Search正是在这样的情况下发展起来的,基于对象的检索引擎,能够很方便的将检索出来的内容转换为具体的实体对象。此外Hibernate Search能够根据需要进行同步或异步的索引更新。
如果项目是hibernate的话,不许要做很大的改动就可以使用。

猜你喜欢

转载自blog.csdn.net/qq_42046342/article/details/105192141