开元周游
德国频道
查看: 1726|回复: 1
打印 上一主题 下一主题

[互联网] 关于站内搜索的高级解决方案

[复制链接]
跳转到指定楼层
1#
发表于 27.1.2011 13:04:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
即时机票
前面有一位开元会员在本版问站内搜索的问题,他还没有数据库等的概念,怎么样搞定站内搜索呢?我下面就介绍一个站内搜索比较好的用法
搜索谁最强?google!
我们就直接利用google提供的search API来实现,并且实现google的instant效果,直接在框内输入文字就能看到结果,尽量输入旅游相关的,因为这是个旅游网站
演示:http://www.kaiyuan.eu/view_websearch.html

说明:
1,webSearch.setSiteRestriction('www.kaiyuan.eu');限定搜索范围为www.kaiyuan.eu站内
2,最下面的CSS是隐藏google的一些信息,按照我现在的模式按钮这些可以去掉了
api手册:http://code.google.com/apis/websearch/docs/
  1. <script src="https://www.google.com/jsapi" type="text/javascript"></script>

  2. <script language="JavaScript">
  3. google.load('search', '1');

  4. var timerId;
  5. var input;
  6. var lastSearch = 0;
  7. var contentDiv;

  8. function search(query) {
  9.   lastSearch++;
  10.   webSearch = new google.search.WebSearch();
  11.   webSearch.setSiteRestriction('www.kaiyuan.eu');
  12.   webSearch.setSearchCompleteCallback(this, searchComplete, [webSearch, lastSearch]);
  13.   webSearch.execute(query);
  14. }

  15. function autoSearch() {
  16.   var query = this.value;
  17.   if (timerId) {
  18.     window.clearTimeout(timerId);
  19.     timerId = null;
  20.   }
  21.   timerId = window.setTimeout('search(\'' + query + '\')', 250);

  22. }

  23. function searchComplete(searcher, searchNum) {
  24.   if (searchNum == lastSearch) {
  25.     var lastResults = document.getElementById('results');
  26.     if (lastResults) {
  27.       lastResults.parentNode.removeChild(lastResults);
  28.     }

  29.     var results = searcher.results;
  30.     var newResultsDiv = document.createElement('div');
  31.     newResultsDiv.id = 'results';
  32.     for (var i = 0; i < results.length; i++) {
  33.       var result = results[i];
  34.       var resultHTML = '链接地址:<a href="' + result.unescapedUrl + '" target="_blank"><em>' +
  35.                         result.unescapedUrl + '</em></a><br />标题:' + result.title + '<br />内容提要:' + result.content +
  36.                         '<br/><br/>';
  37.       newResultsDiv.innerHTML += resultHTML;
  38.     }
  39.     contentDiv.appendChild(newResultsDiv);
  40.   }
  41. }

  42. function OnLoad() {
  43.   contentDiv = document.getElementById('content');
  44.   input = new google.search.SearchForm(true, contentDiv);
  45.   input.input.onkeyup = autoSearch;
  46.   input.setOnSubmitCallback = function() {
  47.     search(input.input.value);
  48.   };
  49. }

  50. google.setOnLoadCallback(OnLoad);

  51. </script>
  52. <style>
  53. .gsc-search-button, .gsc-clear-button, .gsc-branding{
  54. display:none;
  55. }
  56. </style>
  57. <body>
  58. <div id="content">Loading...</div>
  59. </body>
复制代码


2#
发表于 27.1.2011 15:12:48 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 2.12.2024 14:45

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表