1.Lucene

全文检索?Lucene?

在我们开发项目的过程中,我们往往会使用模糊搜索这个功能,比如说:

我们数据库中存储有 ”商品名称“ 这个字段,我们需要对其进行模糊搜索。

在项目前期我们直接在数据库中使用 like 语句进行模糊搜索,然后项目运行一段时间,新增了大量的商品,数据量增加到上百万的数据,这时只要搜索需要很长时间才能响应。

出现这个原因是在模糊搜索上,因为普通的数据库模糊搜索根本做不了索引,用户每次搜索都进行全表扫描查询,速度当然慢。

这时候我想起淘宝京东,他们的商品数量应该不止百万,那他们是怎么做到秒搜的呢?

这时候我们就可以在网上查询一下,大家都在说搜索引擎,什么 elasticsearch Solr 这些搜索引擎,支持PB级数据,感觉好牛气。但是他们都有个问题,那就是他们是单独的服务。

如果我们想开发个单机版的应用,这时我们就要安装这些额外的软件,这个就有点麻烦了。

经过进一步的了解,我知道了这些搜索引擎基本上都是基于 Lucene 开发的,而且 Lucene 只是一个工具包,不需要额外的服务,这就是我们需要的。

基本上使用 Lucene 的话,上面我们有的问题都没了,上面单机版的应用这些都没问题。

我们该如何选择?

在上面我的描述中,我们基本确定了该如何选择;

  1. 在我们大型分布式的应用,我们应该使用 elasticsearch 、Solr 这些产品。
  2. 在单机小项目中,比如:个人博客、知识库等等数据量不太大的情况下用 Lucene 。

现有的项目要怎么使用?

假如我们现在已经在运行的项目,我们想用 Lucene 或者 elasticsearch 、Solr 这些来做搜索,可以吗?

这当然是可以的,我们只要把数据通过 Lucene 或者 elasticsearch 、Solr 这些来处理一下,以后的搜索全部走他们就可以了,至于添加修改这些还是操作原来的表。

比如说我有个博客网站,我想使用 Lucene 来进行全文搜索,这时我只要把之前的文章使用 Lucene 来创建索引,然后把搜索的接口改成使用 Lucene 来搜索,以后添加的文章我就把数据放到 Lucene 中,这样就可以了。

学习资源

posted @ 2020-10-24 19:15  喵喵扑  阅读(163)  评论(0编辑  收藏  举报