`
vtrtbb
  • 浏览: 361612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php-ext-trie-filter 过滤关键词

    博客分类:
  • php
 
阅读更多

 

 

关键词过滤扩展,用于检查一段文本中是否出现敏感词,基于Double-Array Trie 树实现

 

 

 

安装 libdatrie , 需要 libdatrie-0.2.4 或更新的版本

 

 

 

它依赖 libiconv .

 

安装:

 

================================

 

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

 

tar -zxf libiconv-1.14.tar.gz

 

cd libiconv-1.14

 

./configure

 

make && make install

 

 

 

libdatrie 下载地址:

 

http://linux.thai.net/~thep/datrie/datrie.html#Download

 

 

 

安装:

 

================================

 

wget ftp://linux.thai.net/pub/ThaiLinux/software/libthai/libdatrie-0.2.4.tar.gz

 

tar -zxf libdatrie-0.2.4.tar.gz

 

cd libdatrie-0.2.4

 

 

 

./configure --prefix=/usr/local/libdatrie/

 

make ICONV_LIBS='/usr/local/lib/libiconv.so'

 

make install

 

 

 

安装 PHP 扩展

 

================================

 

wget https://github.com/wulijun/php-ext-trie-filter/archive/master.zip

 

unzip master.zip

 

cd php-ext-trie-filter-master/

 

phpize

 

./configure --with-php-config=/usr/local/php/bin/php-config --with-trie_filter=/usr/local/libdatrie/

 

make && make install

 

 

 

将生成的 trie_filter.so 文件复制到 php 扩展目录,并在 php.ini 中添加该文件

 

参考: http://blog.sina.com.cn/s/blog_5f54f0be0101dxqp.html

 

 

 

安装完后,在 phpinfo 里可以看到 trie_filter 扩展

 

 

 

使用示例

 

$arrWord = array('word1', 'word2', 'word3');

$resTrie = trie_filter_new(); //create an empty trie tree

foreach ($arrWord as $k => $v) {

    trie_filter_store($resTrie, $v);

}

// 生成关键词词典.

trie_filter_save($resTrie, __DIR__ . '/blackword.tree');


// 加载关键词词典

$resTrie = trie_filter_load(__DIR__ . '/blackword.tree');


$strContent = 'hello word2 word1';

// 查找关键词

$arrRet = trie_filter_search($resTrie, $strContent);

print_r($arrRet); //Array(0 => 6, 1 => 5)


echo substr($strContent, $arrRet[0], $arrRet[1]); //word2


$arrRet = trie_filter_search_all($resTrie, $strContent);

print_r($arrRet); //Array(0 => Array(0 => 6, 1 => 5), 1 => Array(0 => 12, 1 => 5))


$arrRet = trie_filter_search($resTrie, 'hello word');

print_r($arrRet); //Array()


// 获得查找结果树

trie_filter_free($resTrie);
 

 

 

分享到:
评论

相关推荐

    php-ext-trie-filter-php7.zip

    标题“php-ext-trie-filter-php7.zip”表明这是一个与PHP扩展相关的压缩文件,具体来说是针对PHP7版本的。PHP扩展通常是由C语言编写的,它们增强了PHP解释器的功能,为开发者提供了更多的库和功能。在本例中,“trie...

    数据结构实验报告-----trie树

    **数据结构实验报告——Trie树** Trie树,又称为前缀树或字典树,是一种用于存储字符串的有效数据结构。它通过将字符串的字符分解并存储在树的节点中,来实现高效的字符串查找、插入和删除操作。在Trie树中,每个...

    php-leetcode题解之实现Trie前缀树.zip

    6. **实际应用**:Trie树在很多场景下都有广泛应用,如自动补全、关键词过滤、IP路由等。在LeetCode上,这个问题旨在测试对数据结构的理解以及在PHP中实现高效算法的能力。 通过这个压缩包,你可以找到详细的PHP...

    linux 下php的filter过滤扩展

    1. 安装和启用:首先,你需要下载并编译`trie_filter`扩展,如文件名`php-ext-trie-filter-3b91737d024e6fa83b2ed71f85de81a04eb931c3`所示的源代码包。这通常涉及到解压文件、运行`phpize`、配置、编译和安装等一...

    go-succinct-data-structure-trie:Trie的简洁数据结构,用Go编写

    Trie的主要优势在于其查询效率,特别适合于实现自动补全、关键词过滤等功能。 在Go语言中,实现Trie数据结构时,我们通常会定义一个节点结构体,包含一个字符字段和多个子节点引用。每个节点的子节点数量取决于字符...

    Implementing-auto-completing-features-using-trie.java

    Implementing_auto_completing_features_using_trie.java

    HAT-trie - A Cache-conscious Trie-based Data Structure for Strings - 2007 (CRPITV62Askitis)-计算机科学

    HAT-trie: A Cache-conscious Trie-based Data Structure for StringsNikolas Askitis Ranjan SinhaSchool of Computer Science and Information Technology, RMIT University, Melbourne 3001, Australia. Email: {...

    marisa-trie:基于 marisa-trie C++ 库的 Python(2.x 和 3.x)静态内存高效的类似 Trie 结构

    基于 C++ 库的 Python(2.7 和 3.4+)静态内存高效的类似 Trie 结构。 MARISA-trie 中的字符串数据可能比标准 Python dict 占用的内存少 50 到 100 倍; 原始查找速度相当; trie 还提供快速的高级方法,如前缀...

    c++实现的一个快速且内存高效的HAT-trie - Tessil/ HAT-trie

    总之,“c++实现的一个快速且内存高效的HAT-trie - Tessil/ HAT-trie-源码”提供了C++中的HAT-trie实现,允许开发者在项目中快速地利用这一高效数据结构,提高字符串操作的性能并节省内存资源。对于需要高效字符串...

    aho-corasick-node:基于DoubleArray Trie的Aho-Corasick字符串匹配算法的Node实现

    aho-corasick-node 基于DoubleArray Trie的Aho-Corasick字符串匹配算法的Node实现。安装npm install aho-corasick-node --save用法建造const AhoCorasick = require ( 'aho-corasick-node' ) ;const keywords = [ 'b...

    shiro-trie:使用类似于Shiro的字符串检查权限,放入Trie中

    使用类似于Shiro的字符串检查权限,并放入Trie中。 以类似的样式处理权限的模块。 权限存储在,这使其具有超强的性能,并且可以进行简单的权限检查之外的其他查询:还可以返回子权限列表。 例如,如果您有权访问ID...

    hat-trie, 一种有效的trie实现.zip

    hat-trie, 一种有效的trie实现 hat 这是Askitis和Sinha的hat trie数据结构的ANSI实现,它是一个非常高效的( 空间和时间) 现代变体。这里实现的版本将字节数组映射到单词( 。例如,无符号的longs ),它可以以用来存储...

    lsm-trie:LSM-trie

    笔记该LSM-trie实现不使用任何用户空间缓存。 I / O限制了其读取性能。 如果您正在寻找用于快速写入,读取和范围搜索的高性能SSD KV存储,请查看 。建造编译器: clang或gcc(在Makefile中更改)。 用于SHA1功能的...

    cpp-C实现快速和高效的HATtrie

    【文件名称列表】:Tessil-hat-trie-ff788cd可能是一个Git仓库的名称,暗示了这是一个开源项目,由Tessil团队开发,版本号为ff788cd。这通常包含源代码、文档、测试用例等资源,用于构建、理解和扩展HATrie实现。 *...

    double-array-trie原理与算法

    double-array-trie原理与算法实现探索,dat算法分析

    G-Trie:G-Trie实施(Ribeiro和Silva,2010年)将与PyGNA一起使用

    G-Trie实施(Ribeiro和Silva,2010年)将与PyGNA一起使用。 这是Pedro Ribeiro和Fernando Silva在“ G-Tries:用于存储和查找子图的数据结构”中概述的G-Trie数据结构的实现,其中使用NetworkX表示图形。

    Routing-Scheme-using-Binary-Trie:网络路由方案的实现

    使用BinaryTrie的路由方案网络路由方案的实现: 每个路由器都有一个IP地址,并且通过使用二进制特里(trie)的最长前缀匹配将数据包转发到下一跳路由器。 使用斐波那契堆为无向图实现Dijkstra的单一源最短路径(ssp...

    PHP-TrieTree-master.zip

    字典树是一种高效的数据结构,常用于字符串搜索、关键词过滤以及自动补全等场景。 字典树,又称前缀树或PATricia树,是一种有序树,用于存储动态集合或关联数组。它的每个内部节点代表一个字符串的前缀,而叶节点则...

    POJ2525-Text Formalization【TrieTree】

    Trie树是一种非二叉的多路搜索树,用于高效地存储和检索字符串集合中的关键词。它的每个节点代表一个字符串的前缀,根节点代表空字符串,而边则代表字符。从根节点到某个节点的路径上的字符组合成的字符串就是该节点...

Global site tag (gtag.js) - Google Analytics