Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何加快搜索建议_Php_Search - Fatal编程技术网

Php 如何加快搜索建议

Php 如何加快搜索建议,php,search,Php,Search,我想提出一个像谷歌这样的搜索建议,速度很快。我用AJAX/jQuery进行了尝试,但速度非常慢。我也尝试用XML代替MySQL,但速度也很慢。我怎样才能加快速度? 我的jquery代码是: function lookup(inputString,fname,sbox,asbox) { if(inputString.length == 0) { // Hide the suggestion box. $('#'+sbox).hide(); } els

我想提出一个像谷歌这样的搜索建议,速度很快。我用AJAX/jQuery进行了尝试,但速度非常慢。我也尝试用XML代替MySQL,但速度也很慢。我怎样才能加快速度? 我的jquery代码是:

function lookup(inputString,fname,sbox,asbox) {
    if(inputString.length == 0) {
        // Hide the suggestion box.
        $('#'+sbox).hide();
    } else {
        // post data to our php processing page and if there is a return greater than zero
        // show the suggestions box
        $.post(fname, {mysearchString: ""+inputString+""}, function(data){
            if(data.length >0) {
                $('#'+sbox).show();
                $('#'+asbox).html(data);
            }
        });
    }
}
php代码是

查询:
maincatid,从maincography中选择类别
“%$mysearchString%”限制10“

if($rs){
而($result=@mysql\u fetch\u object($rs))
{
echo“
  • ”.stru-ireplace($mysearchString,.$mysearchString.',$result->category)。“
  • ”; $c++; } } 否则{ echo“错误:查询有问题。”; } } }否则{ } }否则{ echo“拒绝访问”; }
    谷歌的搜索结果会比你的快有很多原因

    在我的头顶上

  • 他们将拥有某种优化的数据仓库,带有索引和全文搜索,而不是MySQL的免费版本

  • 他们并不是只有一台服务器为他们的请求提供服务,他们有一个CDN和服务器集群,您可以点击离您最近的服务器以获得低延迟

  • 他们会缓存当前的趋势查询,这样他们就不必每次点击都要查找它

  • 他们将在自己的专用服务器上运行,这些服务器每天只为您的搜索结果提供服务,而不是与其他人共享服务器


  • 忘记尝试与谷歌匹配。找出你的搜索速度慢的地方并加以修复。安装firebug,看看你的服务器需要多长时间才能做出响应。分析你的代码,看看哪些部分慢。大多数情况下,是设计糟糕的表和速度慢的服务器造成的。

    谷歌的搜索结果会更快有很多原因比你的好

    在我的头顶上

  • 他们将拥有某种优化的数据仓库,带有索引和全文搜索,而不是MySQL的免费版本

  • 他们并不是只有一台服务器为他们的请求提供服务,他们有一个CDN和服务器集群,您可以点击离您最近的服务器以获得低延迟

  • 他们会缓存当前的趋势查询,这样他们就不必每次点击都要查找它

  • 他们将在自己的专用服务器上运行,这些服务器每天只为您的搜索结果提供服务,而不是与其他人共享服务器


  • 忘记尝试匹配谷歌。找出你的搜索速度慢的地方并加以修复。安装firebug,看看你的服务器需要多长时间才能做出响应。分析你的代码,看看哪些部分慢。大多数情况下,是设计糟糕的表和速度慢的服务器造成的。

    我建议你分析一下,看看你最长的时间在哪里我喜欢看着数据包从Wireshark传输到目的地,尽管当Firefox的插件可以跟踪你的请求时,这似乎有些过分


    然而,看看你的代码,我想说的是,最有可能的是服务器端代码,特别是像WHERE x一样的%y%子句。大多数数据库都不适合使用左通配符,因为它们使用b-树作为索引,所以我会去掉第一个通配符。除此之外,根据过去的拼写错误和eir更正。如果您这样做并正确地索引了您的表,您的请求可能会非常快速。

    我建议您进行配置,以查看您最长的时间都花在了哪里。我喜欢观察数据包从Wireshark传输到其目的地,尽管当有Firefox插件跟踪您的请求时,这似乎有些过分美国


    然而,看看你的代码,我想说的是,最有可能的是服务器端代码,特别是像WHERE x一样的%y%子句。大多数数据库都不适合使用左通配符,因为它们使用b-树作为索引,所以我会去掉第一个通配符。除此之外,根据过去的拼写错误和eir更正。如果您这样做并正确地为表编制索引,您的请求可能会非常迅速。

    很可能您希望使用精英数据结构,如二叉树或trie,或基数树,或patricia树或crit位树。我自己做了一个kart-trie的实现。您可以在中获取它并搜索kart-trie。

    大多数likely你想使用精英数据结构,如二叉树或trie,或基数树,或patricia树或crit位树。我自己做了一个kart trie的实现。你可以在上抓取它并搜索kart trie。

    谷歌做的是它不会在首页发送ajax请求。相反,它有一系列流行的搜索。这就是dis使用autocomplete播放。他们确实有很多数据,而且他们知道人们搜索什么。但是,如果你想快速提出建议,那么你必须优化你的查询。@实验X:试试看-谷歌对查询输入的每个击键都会执行ajax请求。我想谷歌正在使用另一种技术,而不是发送ajaxrequest@Deepa:打开google.com看看有这么难吗?他们确实使用常规的ajax请求
    ,比如“%$mysearchString%”
    ——这些东西无法优化。google关于全文搜索或sphinx+阅读一些关于sql注入的内容google做的是在首页上不发送ajax请求。相反,它有一系列流行的搜索。这是使用autocomplete显示。他们确实有很多数据,而且他们知道人们搜索什么。但是,如果你想快速提出建议,那么你必须优化你的查询。@实验X:试试看-谷歌对查询输入的每个击键都会执行ajax请求。我想谷歌正在使用另一种技术,而不是发送ajaxrequest@De打开google.c有那么难吗
            if($rs) {
                while ($result = @mysql_fetch_object($rs)) 
                {
                    echo '<li onClick="fill(\''.$result->maincatid.'\',\''.$result->category.'\');">'.str_ireplace($mysearchString,'<span style="background-color:#C1E0FF;">'.$mysearchString.'</span>',$result->category).'</li>';
                    $c++;
                }
            } 
            else {
                echo 'ERROR: There was a problem with the query.';
            }
        }
        } else {
        } 
    } else {
        echo 'Access denied.';
    }