再造个轮子,简单快速的 PHP 词库工具

2014-07-04 06:43:07 +08:00
 nowgoo
这么说吧,假如你有一段文本,还有一个巨大的关键词库(几十万起步),现在需要从文本中找出这些关键词,甚至要基于关键词对应的值做一些替换,怎么弄?

在这个简单又常见的需求面前,strtr str_replace preg_replace 什么的集体歇菜了,因为词库太大。

scws?一开始我也这么弄的,可惜它只能帮你把词库中的词找出来,不能基于关键词对应的值进行处理。虽然可以利用词库的属性字段,但它只支持两个字节,显然不能满足需求。

在 Google 上找了半天也没找到我需要的轮子,只好自己撸了一个词库工具:

SimpleDict
https://github.com/nowgoo/dict

简单。纯 PHP 实现,不用安装扩展,也不依赖 xcache memcache redis 之类的缓存。
实用。支持大词库,我自己 40W 的词库跑起来轻轻松松。还支持回调式替换哦!
快速。使用了高大上的 trie 树进行匹配,查找耗时跟文本长度相关,跟词库大小关系不大,速度杠杠的。词典保存成二进制文件,使用时只维持一个文件句柄,避免了传统 trie 树内存开销巨大的弊端。

欢迎有需要的朋友试用 :P
6804 次点击
所在节点    PHP
13 条回复
kenzi
2014-07-04 07:14:47 +08:00
多谢,最近正好需要给几个大文件替换不同的内容生成不同的文件。 preg_replace 太慢了
nowgoo
2014-07-04 07:25:29 +08:00
@kenzi 感谢测试。替换功能还没来得及优化,有什么 BUG 欢迎反馈。
wgqzlj
2014-07-04 09:06:16 +08:00
这个很赞,star了!
cornelia
2014-07-04 09:11:25 +08:00
点赞头像,野田妹;-)
wanjun
2014-07-04 09:12:08 +08:00
我是来看头像的
jingwentian
2014-07-04 09:26:54 +08:00
准备文本格式的词库的格式: 词语<tab>值
LZ给两个例子我看看吧

已感谢..
ideaa
2014-07-04 09:56:05 +08:00
刚好要用,赞个
zjupigeon
2014-07-04 12:42:54 +08:00
php有没有什么好的开源项目,想学习下php
raincious
2014-07-04 12:52:58 +08:00
求做成Composer兼容的。
crny520
2014-07-04 12:56:58 +08:00
我冲着头像来的。。
chijiao
2014-07-04 13:10:56 +08:00
感觉很吊的样子
star001007
2014-07-29 18:33:05 +08:00
star
mingyun
2014-11-23 15:50:14 +08:00
nice

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

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

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

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

© 2021 V2EX