## Fuzzy logic

You have a suggestion for a future version of phpMyFAQ? Then post it here!

Moderator: Thorsten

An4k1n
Posts: 3
Joined: Mon Jul 20, 2009 2:20 pm

### Fuzzy logic

How much work would it be to implement the fuzzy logic (maybe levenshtein) in the search. Many typos prevent a successful finding of information. Here is an example (from http://www.php.net):

Code: Select all

``````<?php
// input misspelled word
\$input = 'carrrot';

// array of words to check against
\$words  = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');

// no shortest distance found, yet
\$shortest = -1;

// loop through words to find the closest
foreach (\$words as \$word) {

// calculate the distance between the input word,
// and the current word
\$lev = levenshtein(\$input, \$word);

// check for an exact match
if (\$lev == 0) {

// closest word is this one (exact match)
\$closest = \$word;
\$shortest = 0;

// break out of the loop; we've found an exact match
break;
}

// if this distance is less than the next found shortest
// distance, OR if a next shortest word has not yet been found
if (\$lev <= \$shortest || \$shortest < 0) {
// set the closest match, and shortest distance
\$closest  = \$word;
\$shortest = \$lev;
}
}

echo "Input word: \$input\n";
if (\$shortest == 0) {
echo "Exact match found: \$closest\n";
} else {
echo "Did you mean: \$closest?\n";
}

?> ``````
The task will be to make the \$words list.