note 41503 added to function.pspell-suggest
| From: | webmaster at hostpure dot com | Date: | Mon, 12 Apr 2004 21:42:33 +0000 |
| Subject: | note 41503 added to function.pspell-suggest | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-68042@lists.php.net to get a copy of this message | ||
It seems if you are trying to do something similar to the Google 'Did you mean:'
suggestions and are selecting the first word given by the pspell_suggest() function, then it will
not work well with custom dictionaries and replacements. Take the following code for example:
<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/home/user/public_html/custom.pws");
pspell_config_repl($pspell_config, "/home/user/public_html/custom.repl");
$pspell_link = pspell_new_config($pspell_config);
$words = preg_split ("/\s+/", $query);
$ii = count($words);
global $spellchecked;
$spellchecked = "";
for($i=0;$i<$ii;$i++){
if (pspell_check($pspell_link, $words[$i]))
{
$spellchecked .= $words[$i]." ";
}
else
{
$erroneous = "yes";
$suggestions = pspell_suggest($pspell_link, $words[$i]);
$spellchecked .= $suggestions[0]." ";
}
}
if($erroneous == "yes")
{
echo "Did you mean: <i>".$spellchecked."?";
}
else
{
echo $spellchecked . " is a valid word/phrase";
}
?>
This works fine most of the time, and gives suggestions to what you meant when inserting a spelling
mistake with most inputs. However, if you specify a custom replacement and then search for the
misspelt word that you specified, then if it is not the first returned suggestion it wont be used in
the 'Did you mean' end result. What you need to do is open up the custom dictionary using
fopen and fread, and then for each of the suggested words, check if they are in the dictionary. If
the suggested word is in the custom dictionary then use it in the 'Did you mean' part, if
not, discard it and try the next. Hope this helps anyone who comes across this problem with trying
to get more accurate suggestions.
----
Manual Page -- http://www.php.net/manual/en/function.pspell-suggest.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+41503
Delete -- http://master.php.net/manage/user-notes.php?action=delete+41503&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+41503&report=yes
Search -- http://master.php.net/manage/user-notes.php