PHP拼写检查和建议,类似于谷歌的“您是否想要:”提示

3

我正在尝试使用PHP为用户的查询应用拼写检查,使用类似于Google的“Did you mean:”系统。

Incorrect Google Query Corrected Google Query

有没有插件或API可以实现这个功能?如果没有,你有什么建议?

可能的简化代码?

API

<?php
    function checkSpelling($query) {
        //Boolean where false value means a word is spelt wrong in string
        return file_get_contents("http://foo.com/?q=$query");
    }

    function getSuggestions($query) {
        //data with suggestions for word
        return file_get_contents("http://foo.com/?q=$query");
    }

    if (!checkSpelling(foo)) {
        echo getSuggestions(foo);
    }
?>

插件

<?php
    require("plugin.php");

    //plugin functions similar to the functions above are defined already

    if (!checkSpelling(foo)) {
        echo getSuggestions(foo);
    }
?>

注意:Pspell不是一个选择,因为我使用的是PHP 5.X.X版本,并且无法在服务器上安装它。

注意:PHP Spell Check没有所需的界面。


1
这是一个非常好的问题,但我认为这个数据/API不会是免费的,因为挖掘这些信息需要很多时间+使用最快的算法来提取。即使你已经收集了数据,要拥有像谷歌那样快速响应的东西(即使是缓存的),也是很困难的。 - dchayka
1个回答

1
使用Levenshtein距离是我首先想到的解决方案,我期望一个自动完成、常见拼写错误关键词集合和Levenshtein和/或SOUNDEX的混合方法将使你达到所需的可用性水平。是的,这是一个有点复杂的项目。
另一个建议是问问自己,“我真正想做什么?”
通常情况下,一个完整的谷歌级别的解决方案可能就像对汤饼进行喷砂一样,因为你的使用情况并不是他们的使用情况。如果目标是以一种简单易行的方式将访客A带到信息B,那么有许多方法可以实现这一目标,这些方法可能比尝试逐字逆向工程更简单和/或更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接