关于全文搜索

技巧库 · forecho · 于 4年前 发布 · 4036 次阅读

如果你数据达到 100W 以上直接搜索数据库的话,将会非常非常的慢,即使是 mongodb 也非常慢。所以这个时候你需要单独的全文搜索引擎。

怎么理解全文搜索引擎呢?

如果你项目是一个 MySQL + PHP 开发的,你可以把全文搜索引擎理解为另外一个独立的数据库,每次操作 MySQL 记得把需要全文 搜索的数据同步到全文搜索引擎库中就可以了,当然更新 MySQL 的时候也记得要更新全文搜索引擎库。

都有哪些全文搜索引擎可以选择?

目前我知道有 sphinx,ElasticSearch(一下简称es),xunsearch 还有 Coreseek,当然不限于以上几种?

简单聊聊

  • sphinx 一个老牌的全文搜索引擎,内存上比 es 要求低,其他功能比 es 就差太多
  • sphinx 算是业余级别,查询语法比较差
  • es 中文分词可以用阿健分词,Ik分词,mmseg分词
  • es 的 shard,是固定的,随着数据量上升,单个分片的数量会爆, 所以需要集群,新增分片后,要做数据迁移
  • es 的插件很丰富
  • 如果是用 Yii 开发的项目,而且数据量也不算很大的情况下,推荐使用 xunsearch,官方对 Yii 做的扩展比较给力
  • Coreseek 是基于老版的 sphinx 开发的,但是对中文支持的比较好,如果担心中文词库的问题可以使用 Coreseek

以上有些信息是基于 QQ 群聊天整理的,如有不对的地方,欢迎评论。


如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。

共收到 0 条回复 全文搜索 讨论
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册