求一个多关键字匹配问题

2018-10-31 21:18:36 +08:00
 aborigine
MySQL 有 A,B 两张表,
A 表 id goods_name,
B 表 keyword,
A 表每天大约 60 万数据,B 表大约 200 个 keyword 更新较少,
然后要求输出 a 表中包含 B 表 keyword 的 goods_name 及相关的 keyword.

由于服务器性能比较渣,所以求问有没有个效率比较高的方法求出来,sql,python 之类的都行.
2694 次点击
所在节点    MySQL
8 条回复
infoflow
2018-10-31 21:44:21 +08:00
把 a 表的数据索引到到 elasticsearch 中,然后用 b 表中的 keyword 检索就行了。比数据库的 like 语句块。
aborigine
2018-10-31 22:21:14 +08:00
@infoflow #1 es 么。。
ccpp132
2018-10-31 22:29:08 +08:00
数据全拉出来多模匹配
westoy
2018-10-31 22:52:01 +08:00
拿空间换时间
建个 a b 关联的中间表 c, 取数据直接这里取
插入 a 就扫一下新条目包含哪些关键词, 然后插入 c
插入 b 就扔到队列, 闲时扫一下 a 里哪些包含这个新条目, 然后插入 c
删除 a,b 就删掉 c 里对应的条目

渣服务器强上 es 大概率求仁得仁了
feverzsj
2018-10-31 22:56:32 +08:00
全文索引,不过 mysql 自带的比较烂,服务器性能差的可以用 Sphinx,性能完爆 es
aborigine
2018-10-31 23:29:27 +08:00
@westoy #4 这思路不错啊,值得一试
aborigine
2018-10-31 23:30:00 +08:00
@feverzsj #5 ok,我也去研究一下 Sphinx
fireapp
2018-10-31 23:47:17 +08:00
keyword 生成 trie 树,然后一条条过一遍就行了

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

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

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

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

© 2021 V2EX