Lucas 不是大佬
老,有一点点
Assuming 你们是初级程序员,那么就用数据库提供的 like 就能解决问题
再说,词汇表翻译,最多也就是几万十几万的数据量,表不会超过20-30MB的,在任何云主机下面挂着 SSD 甚至是普通硬盘,都刷刷没问题,只要你别开奇怪的 UNION 之类的无聊语句就行,所以尽量把要全文搜索的都放在一个单表里
回来回来回来,讲回来
在拉丁语系下面 ,或者是 UTF8mb64_unicode_ci 里面,这种 where like %keyword% 的操作没问题,不建立索引,几千行数据,毫秒级别的返回,建立索引,100万以下的数据都是毫秒级的,反正就是查询,很少 update ,建一个两个三个索引都没问题
你去搜索大一点的字段的时候,就是 ->where('content', 'like' , '%'.关键字.'%') 妥妥的,记得加上 fulltext index 你在 PHPMyAdmin 里面建立表的时候就能看到这个索引选项,拉丁语系别怕,单字节的里面包含了所有的什么一二三四声,和德语法语西班牙语的各种奇怪字符,FULLTEXT INDEX 足够
另外,MySQL 5.7 以上的全文搜索默认只是对拉丁语系的,如果想做 CJK 的支持(中日韩文)可以在 my.cnf 中打开 ngram_token_size=2的设置,然后重建一遍索引就好,性能会下降一点,但就支持中日韩文的全文搜索了,而且速度不慢
AGAIN,没有FB/BAIDU/TAOBAO/TENCENT 那样的大数据,一百万以下的MYSQL,都可以用这个方法,五百万以下,把云主机买大点儿的 CPU 也就够了,五百万以上,你扔个 RDS 去帮你跑,也足够
等到 RDS 都不够跑,EXCUSE ME 你问我干啥,那时候你的公司都是 XX 亿美元了,随便找点印度人给你 Java + Elastic Search 或者扔个 MongoDB 去做......