mysql層
like%全模糊%搜索,使用覆蓋索引,有效,但要考慮索引所占空間,查詢的字段少還可以
web 層
前端模糊查詢,給后端精確結果,數據量大前端撐不住。如果某個模糊匹配條件字符串很長,同時數據量又比較大(w以上),那這個搜索做前端模糊一定會占用很多瀏覽器內存且卡頓;但另一種情況是,有多個搜索條件,但是每個條件只有幾個字符,且數據量還可接收,這種情況下模糊匹配也是可以的
應用層
后端取全部數據,流過濾匹配。同樣,要考慮內存使用問題,如果是分頁就更蛋疼了。
中間件層
千萬級數據
- ElasticSearch(開源,有很多功能,所以操作起來也很復雜)
- Algolia(專有,但有很棒的文檔並且非常容易啟動和運行)
- Typesense(開源,提供與 Algolia 相同的模糊搜索功能)