如何低成本解决模糊搜索问题

2022-05-26 17:43:58 +08:00
 brader

用的 mysql 数据库,有时候做业务,动不动产品就会说,这个字段我要模糊搜索。 实在不想大费周章,直接用的 like ,前期还好,到了后面跑不动,还有没有其他低成本的替代方案?

4998 次点击
所在节点    程序员
53 条回复
danbai
2022-05-26 17:45:40 +08:00
最近刚好用到了一个搜索引擎,https://www.meilisearch.com/
Jooooooooo
2022-05-26 17:45:42 +08:00
搞个 es 吧
brader
2022-05-26 17:48:07 +08:00
@Jooooooooo 成本太高了啊,要知道,我们一个后台列表页的需求,按小时算的,就给 2-3 小时工时,去折腾 es ,绩效做不出来
SjwNo1
2022-05-26 17:48:41 +08:00
mysql ngram
Red998
2022-05-26 17:50:48 +08:00
like 的话使用前缀索引好点 、
Jooooooooo
2022-05-26 17:52:32 +08:00
@brader 那只有改需求一个法子了. 比如只搜一段时间内的, 数据会少点.
ragnaroks
2022-05-26 17:52:57 +08:00
只读从库
brader
2022-05-26 17:53:03 +08:00
@redorblacck886 产品不让,就是要模糊搜索效果
liaohongxing
2022-05-26 17:54:15 +08:00
mysql ngram 全文,最方便的了
brader
2022-05-26 17:55:15 +08:00
@liaohongxing 这个好像方便,如果我用自带的全文索引,不装 ngram 这个插件,模糊查找会出什么问题吗?
pengtdyd
2022-05-26 17:56:19 +08:00
需求评审没人提这个问题 ???
liaohongxing
2022-05-26 17:57:07 +08:00
大哥 ngram 是 mysq8 内置插件。都不需要装 ,支持中文 ,简单几下就配起来的。不想麻烦,就这个最简单 。比 like 强一点
brader
2022-05-26 17:58:13 +08:00
@pengtdyd 那帮蠢货从来不开需求评审,需求时间评估也不让开发评估,都是产品或测试一口价定的时间
encro
2022-05-26 17:58:14 +08:00
Mysql 中文全文索引(含实例 5 分钟上手)

https://c4ys.com/archives/2098
brader
2022-05-26 17:58:56 +08:00
@liaohongxing 8 好遥远啊,我们还是 5.6 还是 5.7 来着
wellerman
2022-05-26 18:01:06 +08:00
简单点就用空间换时间,提取关键词(或全部分词),弄个索引。再顶不住了就只有上 ES 了。
MoYi123
2022-05-26 18:03:25 +08:00
换 pg,用 gin 索引
cowwa
2022-05-26 18:10:56 +08:00
搞个 Redi 缓存起来
teel
2022-05-26 18:12:29 +08:00
如果数据量不是特别大的话,把列表内需要搜索的字段全部拉取到前端用 Fuse.js 做模糊搜索。前提是数据量不能太大。
PS:不让开发评估时间的公司还是尽早走吧
dzdh
2022-05-26 18:16:31 +08:00
刚在隔壁帖子里看到了个 zinc https://github.com/zinclabs/zinc

已经在自己的小机器上跑起来了。

meilisearch 自己测试了 1kw 数据服务器内存撑不住了。

要长治久安就用 postgresql 吧,装个 zhparser 还能指定分词和词库。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX