实现:搜索partnumber列,用 02606 这样的字符模糊搜索,快速出结果
杭州 雪花 2020/4/14 17:02:33
有何 实行方案
杭州 雪花 2020/4/14 17:03:01
@curl 大牛如果的如果
杭州 雪花 2020/4/14 17:03:41
代码实现哦,不想安装其他搜索插件
Zjmainstay 2020/4/14 17:20:56
db搜索不香么
Ares 2020/4/14 17:23:36
回答不知道就完事
杭州 雪花 2020/4/14 17:26:43
db哪种搜索能实现呢
杭州 雪花 2020/4/14 17:26:47
貌似不行啊
杭州 雪花 2020/4/14 17:26:54
like性能太慢
杭州 雪花 2020/4/14 17:27:09
全文索引 好像也不行啊
Zjmainstay 2020/4/14 17:28:55
如果是在文件里的话,grep可以试下
杭州 雪花 2020/4/14 17:29:19
我可以跑到文件的
百夫长统计-centcount.com 2020/4/14 17:29:25
将这一列全部读入Redis,看看Redis查找是否快点?毕竟是在缓存中操作
Zjmainstay 2020/4/14 17:29:37
redis怎么查
Zjmainstay 2020/4/14 17:29:44
他要搞内容的模糊搜索
杭州 雪花 2020/4/14 17:29:51
是的
百夫长统计-centcount.com 2020/4/14 17:29:54
keys
Zjmainstay 2020/4/14 17:30:02
。。。
杭州 雪花 2020/4/14 17:30:13
搞内容的模糊搜索 ,你们都用第三方的么
Zjmainstay 2020/4/14 17:30:14
这个关键词叫“卡死”
杭州 雪花 2020/4/14 17:30:44
第三方 搭建维护成本很高
杭州 雪花 2020/4/14 17:30:56
不想用,实在搞不定,也只能用了
百夫长统计-centcount.com 2020/4/14 17:31:36
keys1000万数据几秒内
杭州 雪花 2020/4/14 17:31:57
我要300毫秒内出结果
unhan 2020/4/14 17:33:14
昨晚喝的假酒还没醒?
unhan 2020/4/14 17:33:21
笨笨 2020/4/14 17:34:32
阿里云有个大数据分析服务 不知道你这个需求能不能满足.
百夫长统计-centcount.com 2020/4/14 17:34:41
太湖之光也许能做到,只能拼硬件了
不点 2020/4/14 17:34:53
拼算力
杭州 雪花 2020/4/14 17:35:20
自己写算法,有思路么
不点 2020/4/14 17:35:21
cpu超频,内存条超频
小韵子 2020/4/14 17:35:48
@杭州 雪花 数字的话 >=01402606000
杭州 雪花 2020/4/14 17:36:07
有字母的
杭州 雪花 2020/4/14 17:36:27
这列是 :字母+数字的
小韵子 2020/4/14 17:36:41
把字符串分词,单个字符分
The Milky Way 2020/4/14 17:36:50
只能分类
The Milky Way 2020/4/14 17:37:17
杭州 雪花
自己写算法,有思路么
@杭州 雪花 分类
The Milky Way 2020/4/14 17:37:33
你可以分为A-Z个区
The Milky Way 2020/4/14 17:37:52
把每个字的拼音首字母都放进去
百夫长统计-centcount.com 2020/4/14 17:37:52
你这是模糊查找,只能拼算力,把1000万数据切分成1000份,开1000个线程,估计能在毫秒内出结果。
小韵子 2020/4/14 17:38:03
自己写算法也要遍历的,数据在数据库里
The Milky Way 2020/4/14 17:38:16
数据库就不能设计一下吗?
The Milky Way 2020/4/14 17:38:24
全部杂进数据库?
The Milky Way 2020/4/14 17:38:27
小韵子 2020/4/14 17:38:41
长度固定就全部分成单个字母分别建立索引
The Milky Way 2020/4/14 17:38:49
+1
The Milky Way 2020/4/14 17:39:00
这样就能轻松很多
小韵子 2020/4/14 17:39:41
要么所有长度全部加索引,空间换时间
百夫长统计-centcount.com 2020/4/14 17:40:04
小韵子
长度固定就全部分成单个字母分别建立索引
@小韵子 这种索引也许有几十亿长度,画蛇添足
小韵子 2020/4/14 17:40:24
根据长度建立索引
小韵子 2020/4/14 17:40:46
好像不太对
小韵子 2020/4/14 17:40:53
还是单个字母建立索引吧
小韵子 2020/4/14 17:42:06
20的长度就建立20个字段(可以是虚拟字段能加索引,不用考虑数据一致性问题)
优秀的人一直在奔跑 2020/4/14 17:44:46
Zjmainstay 2020/4/14 17:57:48
Mac [2020-04-14 17:56] ➜ Desktop time grep 6424bfa23 /tmp/result.txt
0490e33d8006424bfa23cb2b9230db6c
grep --color 6424bfa23 /tmp/result.txt 10.57s user 0.13s system 98% cpu 10.824 total
10s
Zjmainstay 2020/4/14 17:57:53
grep 不可行~~
Zjmainstay 2020/4/14 17:58:43
只能自己写算法进行内容的map/reduce
curl 大牛如果的如果 2020/4/14 17:59:38
一次性载入内存
做个hash map映射
curl 大牛如果的如果 2020/4/14 17:59:40
很简单
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:01:10
模糊搜索用hash map咋搞
Zjmainstay 2020/4/14 18:01:19
模糊搜索,什么数据结构支持
curl 大牛如果的如果 2020/4/14 18:01:38
他这个实际上不是模糊搜索
curl 大牛如果的如果 2020/4/14 18:01:46
只是因为刚好是数字字符串
Zjmainstay 2020/4/14 18:01:49
需求就是模糊搜索
curl 大牛如果的如果 2020/4/14 18:01:55
对啊 没错啊
curl 大牛如果的如果 2020/4/14 18:02:03
*12345的需求
Zjmainstay 2020/4/14 18:02:12
curl 大牛如果的如果 2020/4/14 18:02:15
不就是 把一棵树 、、、父节点为1
curl 大牛如果的如果 2020/4/14 18:02:22
的节点先找出
curl 大牛如果的如果 2020/4/14 18:02:25
然后这个结果集厘米
笨笨 2020/4/14 18:02:30
有字母他说
curl 大牛如果的如果 2020/4/14 18:02:31
再找出2
curl 大牛如果的如果 2020/4/14 18:02:32
3
curl 大牛如果的如果 2020/4/14 18:02:37
字母、、、
curl 大牛如果的如果 2020/4/14 18:02:39
一样的啊
Zjmainstay 2020/4/14 18:02:43
你要做搜索树?
curl 大牛如果的如果 2020/4/14 18:02:45
嗯
curl 大牛如果的如果 2020/4/14 18:02:47
搜索树
curl 大牛如果的如果 2020/4/14 18:02:56
全部载入内存
Zjmainstay 2020/4/14 18:03:00
跟敏感词那样
curl 大牛如果的如果 2020/4/14 18:03:04
c写的话
curl 大牛如果的如果 2020/4/14 18:03:07
毫秒级响应
Zjmainstay 2020/4/14 18:03:21
如果是这个的话,我知道有个东西搞
curl 大牛如果的如果 2020/4/14 18:03:40
反正原理就是那样了
curl 大牛如果的如果 2020/4/14 18:03:45
最近忙成狗了
curl 大牛如果的如果 2020/4/14 18:03:49
真惨、、
curl 大牛如果的如果 2020/4/14 18:04:10
一个多月没好好休息了我
Zjmainstay 2020/4/14 18:04:27
curl 大牛如果的如果 2020/4/14 18:04:40
不说了 搬砖去了
Zjmainstay 2020/4/14 18:05:00
php-ext-trie-filter
Zjmainstay 2020/4/14 18:05:14
@杭州 雪花
Zjmainstay 2020/4/14 18:05:43
你把你的内容,按1字符分隔,做成敏感词,基于这个扩展就可以构建出敏感词库
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:05:52
建树的话 那放数据库 然后加索引 内部也是这种处理方法吧
Zjmainstay 2020/4/14 18:06:23
只不过,如果你的数据更新频繁的话… 生成树的过程挺慢的
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:08:06
比如12345678 我搜索345 这个应该从哪个节点开始
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:08:15
如果是123那简单
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:08:31
从中间搜索想不明白树咋搞。。
Zjmainstay 2020/4/14 18:18:29
这是个好课题
Zjmainstay 2020/4/14 18:18:34
有空再研究
curl 大牛如果的如果 2020/4/14 18:29:45
@Zjmainstay 多维映射的问题
curl 大牛如果的如果 2020/4/14 18:29:52
两棵树
curl 大牛如果的如果 2020/4/14 18:30:13
或者是多树
curl 大牛如果的如果 2020/4/14 18:30:34
反正,无非就是空间换时间的问题
curl 大牛如果的如果 2020/4/14 18:30:42
内存足够,。。
curl 大牛如果的如果 2020/4/14 18:30:56
你mysql,整个表,载入内存buff
curl 大牛如果的如果 2020/4/14 18:31:02
最省事
Zjmainstay 2020/4/14 18:34:00
它是模糊搜索
Zjmainstay 2020/4/14 18:34:19
也就是前面可不命中
Zjmainstay 2020/4/14 18:34:27
后面全命中就行
curl 大牛如果的如果 2020/4/14 18:37:22
是的啊
Zjmainstay 2020/4/14 18:42:56
这个算法估计要自己写,常规的敏感词都是要全命中的
Zjmainstay 2020/4/14 18:43:26
或者是既定内容作为敏感词
Zjmainstay 2020/4/14 18:45:08
搜索对象反转了
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:45:50
放存在然后按个循环 多线程都没必有用 然后缓存热数据最靠谱 这种搜索不管咋个想都需要完整遍历
►L̶̶o̶v̶e̶̶→. 2020/4/14 18:46:13
如果内容过长还有必要做处理 如果本身都是短字符串意义不大
猪肉炖粉条 2020/4/14 20:53:34
参考一下谷歌的word2vec 针对海量数据的相似度计算 把字符转换成向量之后 算余玄夹角
猪肉炖粉条 2020/4/14 20:56:02
这是NLP自然语言处理的领域 参考网站 http://www.52nlp.cn/
有更多高手,来探讨下怎么实现么?