codercms/fast-fuzzy-search

Fast fuzzy search in an array of strings for the most similiar ones

v0.2.5 2021-11-29 22:19 UTC

This package is auto-updated.

Last update: 2024-04-29 04:45:47 UTC


README

FastFuzzySearch aimed to search an array of words for the most similiar to the specified one

The used algorythm is much faster than using levenstein distance, or similiar_text functions.

Usage:

require_once("./FastFuzzySearch.php");

//Get words array: (it's english names, starting from A,B,C)
$words = array(
    'Abbott', 'Abe', 'Addison', 'Adrian', 'Aiken', 'Ainsley', 'Al', 'Alan', 
    'Alaric', 'Alban', 'Albert', 'Albion', 'Aldrich', 'Alec', 'Alex', 'Alexander', 
    'Alexis', 'Alf', 'Alfie', 'Alfred', 'Alger', 'Algernon', 'Alick', 'Allan', 
    'Allen', 'Alton', 'Alvin', 'Ambrose', 'Andrew', 'Andy', 'Anthony', 'Archer', 
    'Armstrong', 'Arnold', 'Ashley', 'Aston', 'Atwater', 'Aubrey', 'Austin', 
    'Avery', 'Bailey', 'Baldwin', 'Barclay', 'Barrett', 'Bartholomew', 'Barton', 
    'Basil', 'Baxter', 'Baz', 'Benedict', 'Benjamin', 'Bennett', 'Benson', 'Bentley', 
    'Berkley', 'Bernard', 'Bert', 'Bill', 'Blake', 'Bob', 'Bobby', 'Bond', 'Brad', 
    'Bradley', 'Brent', 'Bret', 'Brewster', 'Brian', 'Brigham', 'Brooke', 'Bruce', 
    'Bruno', 'Bryant', 'Buck', 'Bud', 'Burgess', 'Burton', 'Byron', 'Cade', 'Caesar', 
    'Caldwell', 'Calvert', 'Calvin', 'Carl', 'Carlton', 'Carter', 'Carver', 'Cary', 
    'Casey', 'Cassian', 'Cecil', 'Cedric', 'Chad', 'Chandler', 'Chapman', 'Charles', 
    'Charlie', 'Charlton', 'Chase', 'Chester', 'Chris', 'Christian', 'Christopher', 
    'Chuck', 'Clarence', 'Claude', 'Clay', 'Clayton', 'Clement', 'Cliff', 'Clifford', 
    'Clifton', 'Clive', 'Clyde', 'Cole', 'Coleman', 'Colin', 'Conrad', 'Constant', 
    'Conway', 'Corwin', 'Courtney', 'Craig', 'Crispin', 'Crosby', 'Curtis', 'Cuthbert', 'Cyril'
);


//Create FastFuzzySearch object:
$ffs = new FastFuzzySearch($words);

//Lets pretend, this is user's input:
$input = "charter";

//Lets get three most similiar english names:
$results = $ffs->find($input, 3);

//End output it:
print_r($results);

Results would be:

Array
(
    [0] => Array
        (
            [word] => carter
            [percent] => 0.75
        )

    [1] => Array
        (
            [word] => chad
            [percent] => 0.33333333333333
        )

    [2] => Array
        (
            [word] => charlie
            [percent] => 0.26666666666667
        )

)