V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nowgoo
V2EX  ›  PHP

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

  •  
  •   nowgoo · 2014-07-04 06:43:07 +08:00 · 7093 次点击
    这是一个创建于 3826 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这么说吧,假如你有一段文本,还有一个巨大的关键词库(几十万起步),现在需要从文本中找出这些关键词,甚至要基于关键词对应的值做一些替换,怎么弄?

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

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

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

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

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

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

    已感谢..
    ideaa
        7
    ideaa  
       2014-07-04 09:56:05 +08:00
    刚好要用,赞个
    zjupigeon
        8
    zjupigeon  
       2014-07-04 12:42:54 +08:00
    php有没有什么好的开源项目,想学习下php
    raincious
        9
    raincious  
       2014-07-04 12:52:58 +08:00
    求做成Composer兼容的。
    crny520
        10
    crny520  
       2014-07-04 12:56:58 +08:00
    我冲着头像来的。。
    chijiao
        11
    chijiao  
       2014-07-04 13:10:56 +08:00
    感觉很吊的样子
    star001007
        12
    star001007  
       2014-07-29 18:33:05 +08:00
    star
    mingyun
        13
    mingyun  
       2014-11-23 15:50:14 +08:00
    nice
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3201 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.