designbycode / fuzzy-search
Fuzzy Search 包提供了一种简单高效的方法,使用 Levenshtein 距离算法在文本集合上执行模糊搜索。当您需要搜索可能包含错误或轻微差异的文本时,此包非常有用。
v1.0.3
2024-07-20 18:33 UTC
Requires
- php: ^8.1|^8.2|^8.3
- designbycode/levenshtein-distance: ^1.0
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^2.20
- spatie/ray: ^1.28
This package is auto-updated.
Last update: 2024-09-30 11:07:44 UTC
README
简介
Fuzzy Search 包提供了一种简单高效的方法,使用 Levenshtein 距离算法在文本集合上执行模糊搜索。当您需要搜索可能包含错误或轻微差异的文本时,此包非常有用。
安装
要安装 Fuzzy Search 包,只需使用 Composer 在您的 PHP 项目中引用它
composer require designbycode/fuzzy-search
使用
创建模糊搜索实例
要创建一个模糊搜索实例,您需要传递一个要搜索的文本数组和一个可选的不区分大小写的搜索标志
use Designbycode\FuzzySearch\FuzzySearch; $texts = ['apple', 'banana', 'orange', 'grape']; $fuzzySearch = new FuzzySearch($texts, true); // Case-insensitive search
执行模糊搜索
要执行模糊搜索,请调用 search
方法并传递搜索查询和可选的最大 Levenshtein 距离
$query = 'aple'; $maxDistance = 2; $results = $fuzzySearch->search($query, $maxDistance); print_r($results); // Output: ['apple']
搜索方法返回一个匹配文本数组,按其与搜索查询的 Levenshtein 距离排序。
获取最佳匹配项
要从搜索结果中获取最佳匹配项,请调用 getBestMatch 方法
$bestMatch = $fuzzySearch->getBestMatch($results); echo $bestMatch; // Output: 'apple'
Levenshtein 距离计算器
Levenshtein 距离计算器是一个实用程序类,用于计算两个字符串之间的 Levenshtein 距离。此类由模糊搜索包内部使用。
计算 Levenshtein 距离
要计算两个字符串之间的 Levenshtein 距离,请调用 calculate 方法
use Designbycode\FuzzySearch\LevenshteinDistance; $str1 = 'kitten'; $str2 = 'sitting'; $distance = LevenshteinDistance::calculate($str1, $str2); echo $distance; // Output: 3
示例
示例 1:不区分大小写的模糊搜索
$texts = ['Apple', 'Banana', 'Orange', 'Grape']; $fuzzySearch = new FuzzySearch($texts, true); $query = 'aple'; $maxDistance = 2; $results = $fuzzySearch->search($query, $maxDistance); print_r($results); // Output: ['Apple']
示例 2:区分大小写的模糊搜索
$texts = ['apple', 'banana', 'orange', 'grape']; $fuzzySearch = new FuzzySearch($texts, false); $query = 'Aple'; $maxDistance = 2; $results = $fuzzySearch->search($query, $maxDistance); print_r($results); // Output: []
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。