我正在尝试使用php实现一个简单的搜索引擎。我应该让一个.php在我的服务器上持续运行并发布一个JSON吗?或者我可以以某种方式向服务器发布一些东西,并只有在发布了一些东西时才运行脚本吗?不管怎样,我都不知道该怎么做。我也一直在读一些关于CRON工作的文章。这适用于这里吗?
编辑:用户看到搜索框。在搜索框中键入查询。按enter键。使用AJAX向服务器发送JSON查询。服务器使用发送的JSON查询来搜索某些文档的索引,而不是搜索网站。服务器以JSON格式返回结果。这些结果随后被解释并显示给用户。
我已经在php中进行了搜索设置。我是php的新手。
第2版:我已经使用Elastic search进行了搜索设置。我只是想知道在服务器上将信息从Javascript/HTML站点发送到pHp的最佳实践是什么。我为不够清楚而道歉。
CRON作业将不适用,除非您希望安排搜索并在搜索完成时通知用户(尽管这是可能的,但这并不是您真正想要的)。
AJAX在这里非常方便,尤其是如果您想添加诸如自动完成之类的功能。但是,如果您希望页面重新加载,使用搜索结果重新呈现整个页面内容,或者使用这些结果重定向到另一个页面,AJAX是不必要的,因为您必须执行两个HTTP请求,而不是一个。
在我看来,您所需要做的就是通过GET请求获得一个带有搜索字段发布的单一输入表单。
例如:
<form action="/search_results.php" method="get">
<input type="text" name="query" />
<button type="submit">Search</button>
</form>
哪个会重定向到URL如下的搜索结果页面:/search_results.php?查询=一些+简单+搜索
然后,在PHP代码中,您可以使用$_GET["query"]获取查询参数,您可以直接将其传递给搜索引擎(Elastic search)进行分析。
我从未尝试过Elastic Search,但如果必须传递JSON数据,则可以使用对查询进行编码
$search = json_encode(array('query' => $_GET['query']));
这很难准确,因为你还没有提供预期的搜索格式,但我认为这应该会让你步入正轨。
如果您有任何问题,请随时在下面发表评论:)
html:
<form method="get" action="search.php>
<input type="text" name="search" />
<input type="submit" name="submit" value="Search" />
</form>
search.php:
<?php
$whatTheyWantToSearch = $_GET['search'];
// $whatTheyWantToSearch now holds the value that was submitted in the form
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form id="myForm">
<input id="request" type="text" size="20"><br/><br/>
<input type="submit" value="search">
</form>
<div id="search_result"></div>
<script>
$(document).ready(function(){
$('#myForm').submit(function(){
$.ajax({
type: "POST",
url: "search.php",
data: "search_request="+$("#request").val(),
success: function(html){
$("#search_result").html(html);
}
});
return false;
});
});
</script>