受欢迎的博客标签

---------------------------------------搜索引擎JSONP接口---------------------------------------------

提示:URL中的 #content# 为搜索的 关键字

谷歌(Google)

http://suggestqueries.google.com/complete/search?client=youtube&q=#content#&jsonp=window.google.ac.h

callback:window.google.ac.h

window.google.ac.h(["关键字",[["关键字",0],["关键字 歌词",0],["关键字参数",0],["关键字 lyrics",0],["关键字过滤",0],["关键字排名",0],["关键字查询",0],["关键字提取算法",0],["关键字规划师可通过以下哪种方式帮助您制作新的搜索网络广告系列",0],["关键字优化",0]],{"k":1,"q":"uhaB8ZMjzJay-BACee_C0eVdUCA"}])

 

必应(Bing)

http://api.bing.com/qsonhs.aspx?type=cb&q=#content#&cb=window.bing.sug

 callback:window.bing.sug

if(typeof window.bing.sug == 'function') window.bing.sug({"AS":{"Query":"关键字","FullResults":0}} /* pageview_candidate */);

 

百度(Baidu)

http://suggestion.baidu.com/su?wd=#content#&cb=window.baidu.sug

callback:window.baidu.sug

window.baidu.sug({q:"关键字",p:false,s:["关键字搜索排名","关键字怎么优化","关键字查询工具","关键字推广","关键词优化","关键词排名","关键字 英文","关键词挖掘","关键词查询","关键词搜索"]});

 

好搜(So)

https://sug.so.360.cn/suggest?encodein=utf-8&encodeout=utf-8&format=json&word=#content#&callback=window.so.sug

callback:window.so.sug

window.so.sug({"query":"关键字","result":[{"word":"关键字查询"},{"word":"关键字工具"},{"word":"关键字查询工具"},{"word":"关键字挖掘"},{"word":"关键字搜索"},{"word":"关键字英文"},{"word":"关键字是什么"},{"word":"关键字广告"},{"word":"关键字分析"},{"word":"关键字规划师"}],"version":"b","rec":""});

 

搜狗(Sogou)

 https://www.sogou.com/suggnew/ajajjson?type=web&key=#content#

 callback:window.sogou.sug

window.sogou.sug(["关键字",["关键字查询","关键字搜索","关键字优化","关键字规划师","关键字查询lol","关键字是什么意思","关键字搜索工具","关键字广告图片","关键字排名查询","关键字生成器"],["0;0;0;0","1;0;0;0","2;0;0;0","3;0;0;0","4;0;0;0","5;0;0;0","6;0;0;0","7;0;0;0","8;0;0;0","9;0;0;0"],["","","","","","","","","",""],["0"],"","suglabId_1"],-1);

 

 淘宝(Taobao)

 https://suggest.taobao.com/sug?code=utf-8&q=#content#&callback=window.taobao.sug

 callback:window.taobao.sug

window.taobao.sug({"result":[["关键字推广","204"],["关键字seo","198"],["关键字 网站","182"],["关键字搜索","119"],["关键字软件","44"],["关键字首页","50"],["关键字收录","35"],["关键字采集","16"],["关键字采集器","10"],["网站关键字","180"]]})

 

---------------------------------------搜索建议使用方式---------------------------------------------

 以百度为例,API返回的是JSONP数据,JSONP是跨域访问的一种方式。由于服务器返回的JavaScript代码可以直接引用,通过回调函数的方式就可以间接的获取服务器的数据。

 下面是一个回调搜索建议的例子,window.baidu.sug 返回的是一个json对象

复制代码
        <script type="text/javascript">
            window.onload = function() {
                
                //组装查询地址
                var sugurl = "http://suggestion.baidu.com/su?wd=#content#&cb=window.baidu.sug";
                var content = "关键字";
                sugurl = sugurl.replace("#content#", content);

                //定义回调函数
                window.baidu = {
                    sug: function(json) {
                        console.log(json)
                    }
                }

                //动态添加JS脚本
                var script = document.createElement("script");
                script.src = sugurl;
                document.getElementsByTagName("head")[0].appendChild(script);

            }
        </script>
复制代码

控制台打印的结果:如果要将结果保存在一个字符串数组中,只需要 var arr = json.s 即可。

搜索框对一个网站信息传送非常重要,简直就是个跨空间的传送门!
可是一个孤零零、没有任何提示的搜索框,反而给用户带来了无助感:很多时候用户不知道要输入些什么

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

最近的一个H5项目,由于手机屏幕小的特性,输入不如在电脑上用键盘打字一般流畅,
所以很多用户会偷懒,直接输入拼音、拼音首字母、某个词汇去进行搜索,那么在这种情况下,
就需要系统对用户的搜索行为进行分析,猜想用户最想搜索的是什么?最后将最符合用户需要的结果展现在用户面前。
这就要求系统能快速响应用户的搜索需求,将拼音转换成相应的汉字词组去数据库检索相关的对象信息,将搜索结果展现给用户,
同时还发现,不同的用户对用同一个词条(标题)的提示排序顺序,有不同要求,
比如用户输入jd,高校图书馆用户希望《基督山伯爵》排在前面,《京东疯狂大减价》(我YY的)排在后面,
如果是电商用户,恐怕正好相反,对电商而言,不同销售季节,希望搜索提示出词条的排序也是不同的。

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

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