overtrue/double-array-trie

Double Array Trie 的 PHP 实现。

1.0.0 2022-04-21 00:41 UTC

This package is auto-updated.

Last update: 2024-09-21 05:37:57 UTC


README

Testing GitHub release (latest SemVer) GitHub License Packagist Downloads

Double Array Trie 的 PHP 实现。

Sponsor me

安装

$ composer require overtrue/double-array-trie -vvv

使用

构建 DoubleArrayTrie

使用字符串数组构建

use Overtrue\DoubleArrayTrie\Builder;

$builder = new Builder();

$trie = $builder->build(['foo', 'bar', 'baz']);

$trie->export()->toFile('trie.json');
$trie->export()->toFile('trie.php');
$trie->export()->toFile('trie.dat');

使用键值数组构建

use Overtrue\DoubleArrayTrie\Builder;

$builder = new Builder();

$trie = $builder->build([ 
            '一举' => 'yi ju',
            '一举一动' => 'yi ju yi dong',
        ]);

加载 DoubleArrayTrie

use Overtrue\DoubleArrayTrie\Factory;

$trie = Factory::loadFromFile('trie.json');
$trie = Factory::loadFromFile('trie.php');
$trie = Factory::loadFromFile('trie.dat');

匹配

use Overtrue\DoubleArrayTrie\Matcher;

$trie = Factory::loadFromFile('trie.json');
$matcher = new Matcher($trie);

匹配无值的字符串

// ['foo', 'bar', 'baz']

$matcher->match('foo'); // true
$matcher->match('oo'); // false

匹配有值的字符串

// ['一举' => 'yi ju', '一举一动' => 'yi ju yi dong']

$matcher->match('一举'); // 'yi ju'
$matcher->match('一举一'); // false

前缀匹配

// ['一举' => 'yi ju', '一举一动' => 'yi ju yi dong', '一举成名' => 'yi ju cheng ming',]
$matcher->prefixMatch('一举一动都很奇怪'); 
// [
//  '一举' => 'yi ju',
//  '一举一动' => 'yi ju yi dong'
//]

致谢

❤️ 赞助我

Sponsor me

如果你喜欢我的项目并想支持它,点击这里 ❤️

由 JetBrains 支持的项目

非常感谢 JetBrains 好意提供许可证,让我能够为这个和其他开源项目工作。

贡献

你可以通过以下三种方式之一进行贡献

  1. 使用 问题跟踪器 提交错误报告。
  2. 问题跟踪器 上回答问题或修复错误。
  3. 贡献新功能或更新 wiki。

代码贡献过程并不十分正式。你只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附有适用的单元测试。

许可证

MIT