搜索智能提示问题,高手进来,必有重谢

hu8102 2016-05-29 08:27:11
$(function () {            
$("#q").bigAutocomplete({
width:352,
data:[{title:"中国好声音",result:{ff:"qq"}},
{title:"中国移动网上营业厅"},
{title:"中国银行"},
{title:"中国移动"},
{title:"中国好声音第三期"},
{title:"中国好声音 第一期"},
{title:"中国电信网上营业厅"},
{title:"中国工商银行"},
{title:"中国好声音第二期"},
{title:"中国地图"}]
});

});

如上代码写是完全没有问题的,但是他的提示固定就这么几个标题,如何动态从数据库读取?
我如下写:
$(function () {

var json="";
$.ajax({
url: '/_ajax/Search.ashx',
type: 'get',
data:{key:$("#q").val(),type:search_form.catid.value},
async:false,//阻塞方式,让数据调用完才加载图片
dataType: "text",/*这句可用可不用,没有影响*/
contentType: "application/json; charset=utf-8",
async:false,//要设置为同步的
success: function(result){
json= result;
},
error: function(){return 'Error';}
})

$("#q").bigAutocomplete({
width:352,
data:eval(json)
});
});


前端代码
<input id="q" class="enter" name="infos" onFocus="if(this.value=='搜索资料…'){this.value='';}else{this.select();}this.style.color='black';" value="" autocomplete="off" />
<input class="sb" name="Input" type="submit" value="" />
能从数据库读取出来我设置的默认十个数据,但是我要是输入关键词,如何即时更新这个json这个变量来达到智能提示?
这是源码下载链接:http://tianjin.mycodes.net/201501/jQuery_baidu.zip,哪个帮我参谋下怎么弄?
...全文
301 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
inputcomplete 2017-06-23
  • 打赏
  • 举报
回复
搜索框对一个网站信息传送非常重要,简直就是个跨空间的传送门!
可是一个孤零零、没有任何提示的搜索框,反而给用户带来了无助感:很多时候用户不知道要输入些什么

为什么不能像baidu、淘宝、google那样,给搜索框添加一个自动提示(自动补全)功能呢,
对用户而言,可以有效降低输入成本,获得更多提示,快速了解网站的优质资源
对站长而言,可以优先推送网站的优质关键信息,等于多了一个广告位,更多的展示网站优先推荐的内容。

最近做了一个搜索项目,
发现很多用户会偷懒,直接输入拼音、拼音首字母、某个词汇去进行搜索,
那么在这种情况下,
需要为网站的搜索框安装一个类似百度、google那样的搜索提示、补全功能。
要求系统能快速响应用户的搜索需求,将拼音转换成相应的汉字词组去数据库检索相关的对象信息,将搜索结果展现给用户;
同时还发现,不同的用户对用同一个词条(标题)的提示排序顺序,有不同要求,
比如用户输入jd,高校图书馆用户希望《基督山伯爵》排在前面,《京东疯狂大减价》(我YY的)排在后面,
如果是电商用户,恐怕正好相反,对电商而言,不同销售季节,希望搜索提示出词条的排序也是不同的。

我发现在网上找个关于搜索框(input标签)自动提示的JS插件很容易,一大堆供你挑选,
但是,要想实现拼音、拼音首字母匹配、模糊匹配、智能容错、自定义提示词条自主排序等等这些功能,
是非常琐碎非常麻烦的,
更麻烦的是,我的数据在50万条左右,要想前端用户输入之后有较快(延时小于100ms)的响应,
还需要在前端加一层cache,memocache 、redis试了个遍。

网上的智能提示JS插件,都仅仅是一个前端界面,要实现自动提示,最大困难的是后端实现
92find做一个这样的JS插件:
把前面提到那些功能都封装起来,放在一台云服务器上,
开发者每次需要使用自动提示这个功能时,
只需准备好要提示的词条列表或者标题列表,及其排序的优先级,
向云服务器提交这些数据,服务自动生成前面提到的各种索引(前缀、拼音、容错),
并且自动分发到一个cache中,
开发者只需在自己的H5页面(或者普通HTML页面)中引用一行JS代码,
就可以通过跨域的方式使用自动提示的数据了,
不再需要配置什么数据库,也不需要写一行后台的java/php代码
只需5分钟(是的,是5分钟)和一个txt文本,
自己的搜索框提示功能就可以上线了,而且同baidu、淘宝一样强大。
我把这个功能安装在了国内几家211、985大学的网站上

下面是211 985高校的例子


下面是电商的实例



项目网站www.92find.com
qq_37893949 2017-03-15
  • 打赏
  • 举报
回复
实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识, 如果数据量大,还需要特殊优化 一个小功能,花费太大精力很不划算 我使用了92find.c-o-m的搜索框智能提示功能托管服务, 只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能 比如:汉字拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重 花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能 同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器 兼容ios、Android、Windows
hellomh 2016-06-25
  • 打赏
  • 举报
回复
bigAutocomplete可以用url的
孟子E章 2016-05-29
  • 打赏
  • 举报
回复
var json=""; $.ajax({ url: '/_ajax/Search.ashx', type: 'get', data:{key:$("#q").v 你应该放在input的键盘事件中,而不只是页面一上来加载一次而已
hu8102 2016-05-29
  • 打赏
  • 举报
回复
引用 1 楼 net_lover 的回复:
var json=""; $.ajax({ url: '/_ajax/Search.ashx', type: 'get', data:{key:$("#q").v 你应该放在input的键盘事件中,而不只是页面一上来加载一次而已
change事件?具体怎么写能指点下吗,我之前把那个ajax的提交方法写在change里面,但是不行

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧