-1

我正在尝试使用 php 实现一个简单的搜索引擎。我是否应该在我的服务器上连续运行一个 .php 并发布一个 JSON 或者我可以以某种方式将某些内容发布到服务器并让脚本仅在发布某些内容时运行?反正我也不知道怎么办。我也一直在阅读有关 CRON 工作的内容。这适用于这里吗?

编辑:用户看到搜索框。在搜索框中输入查询。按下进入。JSON 查询使用 AJAX 发送到服务器。服务器使用发送的 JSON 查询来搜索某些文档的索引,而不是搜索网站。服务器以 JSON 格式返回结果。然后将这些结果解释并显示给用户。

我已经在 php.ini 中进行了搜索设置。我对php相当陌生。

EDIT2:我已经使用 Elastic Search 进行了搜索设置。我只是想知道将信息从 Javascript/HTML 站点发送到服务器上的 pHp 的最佳做法是什么。我为不够清楚而道歉。

4

3 回答 3

1

除非您想安排搜索并在搜索完成时通知您的用户(即使有可能,但这并不是您真正想要的),否则 CRON 作业将不适用。

AJAX 在这里非常方便,特别是如果您想添加诸如自动完成之类的功能。但是,如果您希望页面重新加载、使用搜索结果重新呈现整个页面内容或使用这些结果重定向到另一个页面,则不需要 AJAX,因为您必须执行 2 个 HTTP 请求而不仅仅是一。

在我看来,您需要做的就是拥有一个单输入表单,其中包含通过 GET 请求发布的搜索字段。

例如:

<form action="/search_results.php" method="get">
<input type="text" name="query" />
<button type="submit">Search</button>
</form>

哪个会重定向到搜索结果页面,其 URL 如下所示:/search_results.php?query=some+simple+search

然后,在您的 PHP 代码中,您可以使用 $_GET['query'] 获取该查询参数,您可以将其直接传递给您的搜索引擎(弹性搜索)进行分析。

我从未尝试过 Elastic Search,但如果您必须传递 JSON 数据,您可以使用以下方法对查询进行编码:

$search = json_encode(array('query' => $_GET['query']));

很难准确,因为您没有为搜索提供预期的格式,但我认为这应该让您走上正轨。

如果您有任何问题,请随时在下面发表评论:)

于 2013-07-18T14:39:43.987 回答
0
<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> 
于 2013-07-18T14:32:57.357 回答
0

html:

<form method="get" action="search.php>
<input type="text" name="search" />
<input type="submit" name="submit" value="Search" />
</form>

搜索.php:

<?php

$whatTheyWantToSearch = $_GET['search'];

// $whatTheyWantToSearch now holds the value that was submitted in the form
于 2013-07-18T14:12:08.113 回答