如何开发auto complete 智能提示功能

目录(?)[+]

如何开发auto complete 智能提示功能

最近网上好像流传用redis实现,其实智能提示和用什么存储关系不大 07年,我过一个类似的项目

我有几千个名字,随着用户在输入框中不断输入汉字或者拼音,用一个下拉列表提示它可能的输入项

下拉框,选中状态,自然是用js做,这里主要讲一下后端代码怎么实现,原理很简单

这就是一个倒排索引表,我们要做的工作,主要是准备这个索引表的数据, 假设我有一个名字

鲁塔夫

第一步,为这个名字生成拼音,把汉字和拼音都放在一个文本文件里面,一行放一条

鲁塔弗
 lutaf

第二步,用最大前序法切词,具体来说,就是吧 “鲁塔弗”--切成 3行


 鲁塔
 鲁塔弗

lutaf 这个拼音也一样的切成下面的形状

l
 lu
 lut
 luta
 lutaf

然后用一个hash表来装载这些切好的“字段”,每个key对应的value自然就是“鲁塔夫”

  1. ds={}
  2. ds[‘鲁‘]=‘鲁塔弗‘
  3. ds[‘鲁塔‘]=‘鲁塔弗‘
  4. ds[‘鲁塔夫‘]=‘鲁塔弗‘
  5. ds[‘l‘]=‘鲁塔弗‘
  6. ....
  7. ds[‘lutaf‘]=‘鲁塔弗‘

几千个名字都可以如法炮制,但是遇到有相同前缀的怎么办?比如 “鲁塔弗”和“鲁冰花” 都会命中


 l
 lu

很简单,把刚才的哈希表的value从字符串变成list即可,一个前缀对应一个列表,列表里面每个元素都是拥有这个前缀的名字,于是哈希表就变成下面这样

ds[‘鲁‘]=[‘鲁塔弗‘,‘鲁冰花‘,‘鲁智深‘,‘鲁大师‘]
 ds[‘lu‘]=[‘鲁塔弗‘,‘鲁冰花‘,‘鲁智深‘,‘鲁大师‘]

剩下的事情,就简单了,开发一个web应用,用户的request的参数就是用户当前的输入,然后在这个hash表里面查询,得到结果列表之后,用json encode之,render给用户即可

我当时的做法就是用web.py开发这个服务,hash表直接用的dbhash,用fastcgi的方式部署在nginx后面,非常简单

auto complete功能确实和用什么技术存储无关

这个项目的绝大部分代码都是用python开发的,为了降低维护难度,后来我要求一个菜鸟程序员把这个代码转换成php,存储直接用mysql就行

udpate

2013年,用nodejs重新做了一个智能提示 http://lutaf.com/223.htm

时间: 2024-07-30 23:51:18

如何开发auto complete 智能提示功能的相关文章

Eclipse for android 实现代码自动提示智能提示功能

Eclipse for android 实现代码自动提示智能提示功能,介绍 Eclipse for android 编辑器中实现两种主要文件 java 与 xml 代码自动提示功能,解决 eclipse 代码提示失效.eclipse 不能自动提示.eclipse 没有代码提示的问题. 1.设置 java 文件的代码提示功能 打开 Eclipse 依次选择Window > Preferences > Java > Editor - Content Assist > Auto acti

关闭visual studio code 智能提示功能

对于程序初学者来说,应该少用IDE的提示功能,因为这样有助于记住一些常用的函数等功能.这也是为什么戏称喜欢用notepad++(windows)或者vim编辑器(Linux)来开发代码是大神的原因,而且对于初学者,很多老师也建议用记事本敲代码.好,废话不多说,直接出解决办法: 打开visual studio code(下面简称vsc),进入设置, 然后在设置中的user settings中(即右边),输入以下内容("editor.quickSuggestions":false),然后c

Visual Studio 2013 智能提示功能消失解决办法

Visual Studio 2013中,智能提示功能突然用不了,查了一下,使用命令行重置VS的方法解决了这个问题.步骤如下: 开始菜单 -->所有程序-->Visual Studio 2013文件夹 --> Visual Studio Tools --> Developer Command Prompt for VS2013 输入DOS命令: CD Common7/IDE 进入到该工具下的子文件夹中 输入:devenv.exe /resetsettings ,重置Visual St

Visual Studio Code 使用 Typings 实现智能提示功能

前言 我们知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也有一些简单的提示,但这是通过代码片段提供的.功能上远不能和IDE相比.不过最近兴起的文本编辑器的新锐 Visual Studio Code 可以通过 Typings 来对 JavaScript 实现智能提示功能,对于一个文本编辑器来说,这点很难得.所以Visual Studio Code 特别适合用来编写 JavaScript(Node.js)程序; 同时,如果我们需要编写一些尝试性的小代码片段,例如:Lodash.js 某

Visual Studio 2012 智能提示功能消失解决办法

安装为Visual Studio 2012且更新到了Update3,但是发现智能提示功能用不了,查了一下,网上各种资料,重装VS,连重装系统的都有.不过有很多朋友都是使用命令行重置VS的方法解决了这个问题,我试了下但是没起作用,不过去掉了两个参数(原:devenv.exe /setup /resetuserdata /resetsettings)后就成功了.步骤如下: 开始菜单 -->所有程序-->Visual Studio 2012文件夹 --> Visual Studio Tools

在webstorm11中使用nodejs库的智能提示功能

webstorm中默认只是打开ecmascript的智能提示,如果需要使用nodejs作为js的引擎,请打开nodejs的智能提示功能, File -> Settings... -> Languages&Frameworks -> Node.js and NPM 页 Code Assistatant启用node.js库的代码提示即可,如下图

兼容IE8以下浏览器input表单属性placeholder不能智能提示功能,以及使用jquery.validate.js表单验证插件的问题处理

当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.appName == "Microsoft Internet Explorer" && (navigator.appVersion.match(/7./i)=="7." || navigator.appVersion.match(/8./i)=="

怎样增强MyEclipse的智能提示功能

之前一直开发.NET的项目,所以对Visual Studio比较熟悉,要做Java的项目,换成Myeclipse是各种的不适应啊,关键是VS的智能提示很好用,myeclipse提示都不显示出来,开发速率方面就慢了很多.其实Myeclipse代码提示功能是有的,只不过是需要"专业人员"去设置一下. 快捷键 智能提示的快捷键是Alt+/,当然如果用起来不方便的话,还可以自己手动设置成自己使用比较协方便的快捷键 自动提示 Eclipse ,MyEclipse代码里面的代码提示功能默认的一般

Visual Studio 2013开启JavaScript的智能提示功能

在前一次的发布的时候,我们共享了Visual Studio 2013中Windows Azure移动服务的集成和功能.其中包含了移动服务表脚本的编辑能力的介绍.这一次的发布,我们将描述在Visual Studio中怎么样在你的服务器脚本中激活智能提示.这个功能并没有被集成到Visual Studio 2013 预览版中,下边的步骤可以帮助你把它打开. 开始之前,请从这里下载我们的IntelliSense定义文件.将这些文件保存到一个相对容易访问的路径. 智能提示知多少? 我们今天将要发布的文件能