mihanentalpo / fast-fuzzy-search
Fast fuzzy search in an array of strings for the most similiar ones
v0.2.4
2017-08-20 13:58 UTC
Requires
- php: ^5.3.5 || ^7.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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
)
)