链接:
Google AJAX 搜索 API
参考:
http://www.google.com/cse/docs/cref.html?hl=zh-CN
http://www.google.com/cse/manage/all
http://sofree.cc/custom-search-element/
一般来说,每个网站或博客系统都有其自带的搜索,但是很多系统的搜索功能比较简单,搜索结果往往不尽人意。就拿WordPress来说,我用一个关 键词搜索时,会出来很多不相关的结果,而且这些搜索结果不是按相关性排列,而是按发表的时间次序排列的。当文章较多时,我们很难通过搜索找到某一篇文章。
一直想使用Google来实现站内搜索,昨天终于做好了,效果就是顶部导航栏右边的搜索框。使用Google站内搜索有几个好处:
- 优化搜索,提高搜索结果的相关性
- 个性化搜索,一定程度提高博客亲和力与权威性
- 使用外部搜索,降低博客系统的资源消耗
- 与Google Adsense结合,实现盈利
如何使用Google Custom Search打造博客站内搜索?
首先来到http://www.google.com/coop/cse/ ,点击右侧按钮“Creat a Custom Search Engine”,然后会要求使用Google帐号登录,登录后就来到第一步。第一步要求填写基本信息,包括:
- Search engine name - 给搜索取个名
- Search engine description - 简单描述
- Search engine keywords - 搜索关键词,提高搜索相关性
- Search engine language - 搜索结果语言 (简体中文 simplified chinese)
- 搜索范围:only sites I select
- 填写要搜索的网站或博客地址 例如:www.waterylife.com
- AD display - 是否展示广告,如果想结合adsense赚钱,就选Show ads on results pages
- 同意条款
提交后,进入下图所示的页面,finish 就可以了。
我们可以进入控制面板control panel做一些设置。control panel下有一下菜单:
我们主要设置Look and Feel,Code,Make Money
- 在Look and Feel 里选择搜索框的样式
- 在Make Money 里 设置是否与Adsense结合
- 在Code 里设置搜索结果展示页面
这里选择搜索结果展示在博客页面,以及其下面的iframe 项。iframe 项下面的 New ! 是使用ajax输出搜索结果,但是只有8个,而且不能make money。注意填“搜索结果展示的页面 ”。使用wordpress的朋友可以很容易在后台新增一个页面,然后将 Search results code 加入到这个页面即可(代码模式)。也可以手动建立一个静态页面,然后将代码加入到这个页面中。
Search box code 就是搜索框代码,将代码放到想显示搜索框的地方即可。Search results code 是搜索结果的代码,将其放在建立的页面即可。
大概就是这样了,具体的页面优化,可以根据自己博客的页面设计来制作,做到将搜索结果融入到页面,和谐一点。大家可以搜索本站看搜索结果的页面,以作参考。
参考 http://drupal.org/node/274441
参考代码:(替换 Your search engine ID )
<div id="cse-search-form" style="display:none;">Loading</div> <div id="SubGeRight"></div> <script src="http://www.google.com/jsapi" type="text/javascript"></script> <script type="text/javascript"> google.load('search', '1', {language : 'en'}); google.setOnLoadCallback(function(){ var customSearchControl = new google.search.CustomSearchControl('Your search engine ID'); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); options.setSearchFormRoot('cse-search-form'); customSearchControl.draw('SubGeRight', options); customSearchControl.execute("<?php echo trim($_GET['keyword']) ?>"); }, true); </script> <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" /> <style type="text/css"> .gsc-control-cse { font-family: Arial, sans-serif; border-color: #FFFFFF; background-color: #FFFFFF; } input.gsc-input { border-color: #BCCDF0; } input.gsc-search-button { border-color: #666666; background-color: #CECECE; } .gsc-tabHeader.gsc-tabhInactive { border-color: #E9E9E9; background-color: #E9E9E9; } .gsc-tabHeader.gsc-tabhActive { border-top-color: #FF9900; border-left-color: #E9E9E9; border-right-color: #E9E9E9; background-color: #FFFFFF; } .gsc-tabsArea { border-color: white; } .gsc-webResult.gsc-result { border-color: #FFFFFF; background-color: #FFFFFF; } .gsc-webResult.gsc-result:hover { border-color: #FFFFFF; background-color: #FFFFFF; } .gs-webResult.gs-result a.gs-title:link, .gs-webResult.gs-result a.gs-title:link b { color: #CC2826; } .gs-webResult.gs-result a.gs-title:visited, .gs-webResult.gs-result a.gs-title:visited b { color: #CC2826; } .gs-webResult.gs-result a.gs-title:hover, .gs-webResult.gs-result a.gs-title:hover b { color: #CC2826; } .gs-webResult.gs-result a.gs-title:active, .gs-webResult.gs-result a.gs-title:active b { color: #CC2826; } .gsc-cursor-page { color: #CC2826; } a.gsc-trailing-more-results:link { color: #CC2826; } .gs-webResult.gs-result .gs-snippet { color: #000000; } .gs-webResult.gs-result .gs-visibleUrl { color: #858585; } .gs-webResult.gs-result .gs-visibleUrl-short { color: #858585; } .gsc-cursor-box { border-color: #FFFFFF; } .gsc-results .gsc-cursor-page { border-color: #E9E9E9; background-color: #FFFFFF; } .gsc-results .gsc-cursor-page.gsc-cursor-current-page { border-color: #FF9900; background-color: #FFFFFF; } .gs-promotion.gs-result { border-color: #336699; background-color: #FFFFFF; } .gs-promotion.gs-result a.gs-title:link { color: #0000CC; } .gs-promotion.gs-result a.gs-title:visited { color: #0000CC; } .gs-promotion.gs-result a.gs-title:hover { color: #0000CC; } .gs-promotion.gs-result a.gs-title:active { color: #0000CC; } .gs-promotion.gs-result .gs-snippet { color: #000000; } .gs-promotion.gs-result .gs-visibleUrl, .gs-promotion.gs-result .gs-visibleUrl-short { color: #008000; } /* by peikai*/ .gsc-tabHeader.gsc-tabhActive{ display:none; } .gs-webResult.gs-result .gs-snippet{ font-size:12px; } .gs-webResult.gs-result .gs-title { font-family:Georgia,"Times New Roman",Times,serif; font-size:13pt; overflow:visible; } .gs-webResult.gs-result .gs-title a { } .gs-result .gs-title, .gs-result .gs-title * { color: #CC2826; text-decoration:underline; } .gsc-wrapper{ width: 600px; } </style>