Php 自动完成以及拼写检查和文本字段复数检查

Php 自动完成以及拼写检查和文本字段复数检查,php,javascript,ajax,drupal-6,jquery-autocomplete,Php,Javascript,Ajax,Drupal 6,Jquery Autocomplete,您好,我正在为我的一个自定义文本字段使用Drupal的6个默认jQuery自动完成功能 现在我想添加拼写检查以及复数检查 例如 Word: Potatos Spellchecker suggestions (including plural check): Potato, Potatoes 是否有任何方法可以实现此功能,以便在用户键入Potatos时。首先将运行拼写检查脚本,该脚本将建议正确的替代方案,一旦用户选择了正确的单词,自动完成脚本将运行?您需要做的是首先安装一个服务器端解决方案来执

您好,我正在为我的一个自定义文本字段使用Drupal的6个默认jQuery自动完成功能

现在我想添加拼写检查以及复数检查

例如

Word: Potatos

Spellchecker suggestions (including plural check): Potato, Potatoes

是否有任何方法可以实现此功能,以便在用户键入Potatos时。首先将运行拼写检查脚本,该脚本将建议正确的替代方案,一旦用户选择了正确的单词,自动完成脚本将运行?

您需要做的是首先安装一个服务器端解决方案来执行拼写检查,例如,您可以使用。如果您无法安装PSpell,您可以使用Googlespell(请务必查看使用条款),也可以使用一些客户端实现(尽管不如服务器端解决方案可靠)

有很多插件可以帮助你进行拼写检查,但是对于你的任务,我会选择一些更轻量级的插件,比如

使用所需选项启动拼写检查器,并为文本字段创建事件侦听器,一个简单的示例是:

var spellchecker = new $.SpellChecker('textarea', {
    lang: 'en',
    parser: 'text',
    webservice: {
       path: '../../webservices/php/SpellChecker.php',
       driver: 'pspell'
    },
    suggestBox: {
       position: 'above'
    }
});

$('textarea').keyup(function() {
        //you would probably want to add a timer looking to see if user is finished typing
        spellchecker.check();
    });
然后,您需要为拼写检查器事件添加一个侦听器
replace.word

spellchecker.on('replace.word', function() {
      //ie: submit the form
   });
如果你想做一些更高级的事情,你也可以尝试覆盖Drupal内置的autocomplete
Drupal.jsAC
event
.keyup()
,看看是否触发了事件
check.success
(没有拼写错误的单词)。如果没有拼写错误的单词,则使用drupals自动补全实现onkeyup事件。如果有拼写错误的单词,对这些事件不做任何处理

var misspelledWord = false;
spellchecker.on('check.success', function() { misspelledWord = false; });
spellchecker.on('check.fail', function() { misspelledWord = true; });

jQuery(document).ready(function(){
    Drupal.jsAC.prototype.onkeyup = function (input, e) {
      if(misspelledWord) {
          if (!e) {
          e = window.event;
        }
        switch (e.keyCode) {
          case 16: // shift
          case 17: // ctrl
          case 18: // alt
          case 20: // caps lock
          case 33: // page up
          case 34: // page down
          case 35: // end
          case 36: // home
          case 37: // left arrow
          case 38: // up arrow
          case 39: // right arrow
          case 40: // down arrow
            return true;

          case 9:  // tab
          case 13: // enter
          case 27: // esc
            this.hidePopup(e.keyCode);
            return true;

          default: // all other keys
            if (input.value.length > 0)
              this.populatePopup();
            else
              this.hidePopup(e.keyCode);
            return true;
        }
      }
    };
});

但是,通过在spellcheckers replace.word事件中使用jQuery的AJAX功能来实现您自己的自动完成对我来说更有意义-您还可以使用/自定义一个jQuery自动完成插件。

我使用Levenshein距离算法为jQuery UI默认自动完成添加了拼写检查功能。检查github上的代码:

它被包装成一个jquery插件。您需要做的只是:

$('.your-selector').spellcheckAutocomplete();

我认为解决方案应该由ajax调用服务器端

选项1-soundex mysql

简捷

如果您使用mysql,并且数据语言为英语,SOUNDEX可能是您的一个选择

例如:

mysql> select SOUNDEX('potato'), SOUNDEX('potatos'), SOUNDEX('potatoes');
+-------------------+--------------------+---------------------+
| SOUNDEX('potato') | SOUNDEX('potatos') | SOUNDEX('potatoes') |
+-------------------+--------------------+---------------------+
| P300              | P320               | P320                |
+-------------------+--------------------+---------------------+
现在,根据soundex算法在数据库中搜索相等或有微小差异的单词

选项2-斯芬克斯搜索

它很难安装、配置和学习,但支持多种语言、词干算法、高级查询(布尔模式等)、改进的性能

如果你想要更先进的系统,一个支持词干的全文搜索引擎将对你帮助很大。看一看


使用词干分析,当您搜索土豆时,配置了morpohology=en的土豆和土豆搜索引擎将返回相同的结果。

cfk editor或tinymcemind@Dagon是否可以向textfield添加相同的功能?