designbycode/fuzzy-search

Fuzzy Search 包提供了一种简单高效的方法,使用 Levenshtein 距离算法在文本集合上执行模糊搜索。当您需要搜索可能包含错误或轻微差异的文本时,此包非常有用。

v1.0.3 2024-07-20 18:33 UTC

README

Latest Version on Packagist Tests Total Downloads

简介

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)。有关更多信息,请参阅 许可证文件