nowgoo
V2EX  ›  PHP

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

  •  
  •   nowgoo · Jul 4, 2014 · 8600 views
    This topic created in 4508 days ago, the information mentioned may be changed or developed.
    这么说吧,假如你有一段文本,还有一个巨大的关键词库(几十万起步),现在需要从文本中找出这些关键词,甚至要基于关键词对应的值做一些替换,怎么弄?

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

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

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

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

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

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

    已感谢..
    ideaa
    ideaa
    Jul 4, 2014
    7
    刚好要用,赞个
    zjupigeon
    zjupigeon
    Jul 4, 2014
    8
    php有没有什么好的开源项目,想学习下php
    raincious
    raincious
    Jul 4, 2014
    9
    求做成Composer兼容的。
    crny520
    crny520
    Jul 4, 2014
    10
    我冲着头像来的。。
    chijiao
    chijiao
    Jul 4, 2014
    11
    感觉很吊的样子
    star001007
    star001007
    Jul 29, 2014
    12
    star
    mingyun
    mingyun
    Nov 23, 2014
    13
    nice
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4744 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 08:30 · PVG 16:30 · LAX 00:30 · JFK 03:30
    ♥ Do have faith in what you're doing.