使用全文而不是LIKE php mysql即时搜索

时间:2014-05-12 11:41:21

标签: php jquery mysql search full-text-search

我想使用jquery php和mysql即时搜索我的网站。 以前我曾经在.searchbox上从keyup获取文本,并通过ajax将请求发送到php。

PHP

$query="Select from names where concat(fname," ",lname) Like '$search%' "

这样可以正常工作。但我听说Fulltext比LIKE快了很多时间。但它只有在有人写一个全名时才会起作用。 因此无法自动完成搜索。我想知道是否有任何替代我的上述代码,使用全文或任何其他方法更快。

2 个答案:

答案 0 :(得分:1)

如果您正在寻找一个强大的搜索系统,那么您需要查看Apache Lucene。从我在几个论坛上看到的内容来看,MySQL FullText与Apache Lucene相比真的很慢。您还可以查看Apache Solr(基于Apache Lucene)。

如果您正在尝试构建自动填充字段,那么您需要查看:   - Twitter的Typeahead   - jQuery UI

在这里,您可以找到自动填充字段的好教程: http://www.pontikis.net/blog/jquery-ui-autocomplete-step-by-step

答案 1 :(得分:0)

我建议

PHP中的

$search_name=explode(" ", addslashes($search));
fname =  $search_name[0];
if(!empty($search_name[1])) { 
    $lname = $search_name[1];
    $sql_add = "(lname LIKE '$lname%') OR";
} else $sql_add="";

在sql中

"Select from names where $sql_add fname LIKE '$fname%'"

确实可能会有很多结果,但由于sql条件的原因,某些结果会丢失。