如果你数据达到 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