我想在我的网站主页上创建一个搜索框,可以搜索整个网站。我知道这是一个非常普遍的问题,但我会非常高兴只有一个概括性的答案,无论如何要做到这一点?
答案 0 :(得分:11)
你无法使用Javascript真正做到这一点。您将不得不使用某种可以访问您的数据库的服务器端语言。或者,您可以使用Google Custom Search Engine之类的内容来提供搜索功能。
答案 1 :(得分:1)
一旦您开始希望用户能够搜索您的网站,就意味着您的网站不仅仅是一些简单的HTML网页。您是否考虑过使用Drupal,Joomla!,Wikimedia或其他CMS?其中大多数具有内置的搜索功能(以这种或那种方式)。
答案 2 :(得分:1)
人们会告诉你不。他们主要是,他可能不是最好的方法。
但是根据您的网站,从技术角度来说,用JavaScript无法做到这一点可能是不正确的。如果您想要搜索的所有文档都有一个在整个站点中使用的唯一URL,并且如果它们的图形已连接,我认为您可以用JavaScript编写一个蜘蛛,一旦用户访问您的站点就开始索引所有这些页面。它做任何其他蜘蛛做的事情:在当前页面上查找链接,请求它们后面的文档(使用XMLHTTPRequest或某种框架或弹出窗口),根据某些方案处理文档和索引关键字,并存储结果(可能是一个cookie)。
当然,为每个访问者复制所有这些工作并没有多大意义,这就是为什么其他人告诉你的不是大多数是正确的。但这在理论上是可行的。
答案 3 :(得分:0)
这将涉及的不仅仅是Javascript,还取决于许多不同的变量。通常,站点建立在MySQL(或类似)数据库上。如果在您的情况下这是真的,您可能希望使用一些PHP进入它并搜索每个记录。这是使用PHP和MySQL的一个例子。
对于表单,这样的东西可以工作:
HTML
<form action="?" method="get">
<input type="text" id="search" name="search" />
<input type="submit" name="submit" id="submit" value="Search" />
</form>
然后你需要使用一些PHP,假设你想搜索一个博客文章表的标题和正文:
$search_terms = mysql_real_escape_string($_GET['search']);
$resc = mysql_query("SELECT * FROM blog_posts WHERE title LIKE '%".$search_terms."%' OR body LIKE '%".$search_terms."%'");
$posts = mysql_fetch_assoc($resc);
现在$posts
是一个数组,其中包含与其标题或正文中的搜索字词匹配的所有帖子。
注意:要搜索text
类型的MySQL字段,您需要将该字段设为FULLTEXT
索引。
查看此链接以获取更多信息:http://devzone.zend.com/article/1304
这是一个非常简单的解决方案,但它可以帮助您走上正确的道路。