自定义查询–关于倒排索引的研究

最近学习了es的视频,感觉这个产品对于查询来说非常方便,但是如何应用到我们自己的 产品中来呢。因为我们的产品数据更新太快,其实不太适合用es做主力存储。并且我们的业务还没有到那种巨量级别,产品的服务器容量也有限,所以我打算根据es的倒排索引的原理,自己写一个查询的组件。

我的理解是这样的,有大量的文字需要进行模糊查询,在mysql中,如果使用like的话是非常合适的,目前我就是采用这种方式查询的,因为数据量还未到千万级别,速度也还行,不过马上要突破了,所以要考虑优化的事情了。所以我的思路是这样的:

1 首先将数据库中的大段文字和标题都提取出来。

2 这些文字都对应了主键。

3 使用jcseg分词将一段文字进行分词,然后将分好的词语主键保存到redis中去。

4 为了节省空间,只分重要的业务关键字,其他无关的分词都不需要。

5 因为数据量巨大,在进行数据提取的时候,采用了线程池,优化了采集速度。

使用的代码如下:

中文分词代码

1 本文提供了倒排索引的思路,比较浅显,还可以深入研究

2 使用本组件将关键字放入redis之后,页面上传入的关键字就可以在redis中对应key,这样的速度将非常快,从key中可以找到主键,再用主键到mysql中查询,大大提高了查询速度。

3 需要考虑的问题,如何做到更新就加入关键字到redis中去。是采用实时变更就加入,还是定时一分钟,或者一小时加入,需要结合业务来处理。

Original: https://www.cnblogs.com/machine-matrix/p/16534476.html
Author: liandyao
Title: 自定义查询–关于倒排索引的研究

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592278/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球