Php 如何加快搜索建议
我想提出一个像谷歌这样的搜索建议,速度很快。我用AJAX/jQuery进行了尝试,但速度非常慢。我也尝试用XML代替MySQL,但速度也很慢。我怎样才能加快速度? 我的jquery代码是: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
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“拒绝访问”;
}
谷歌的搜索结果会比你的快有很多原因
在我的头顶上
忘记尝试与谷歌匹配。找出你的搜索速度慢的地方并加以修复。安装firebug,看看你的服务器需要多长时间才能做出响应。分析你的代码,看看哪些部分慢。大多数情况下,是设计糟糕的表和速度慢的服务器造成的。谷歌的搜索结果会更快有很多原因比你的好 在我的头顶上
忘记尝试匹配谷歌。找出你的搜索速度慢的地方并加以修复。安装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.';
}