构建SMART mySQL的最佳方式PHP搜索引擎?

时间:2011-01-10 02:45:30

标签: php mysql search

构建mySQL&的最佳方法是什么? PHP搜索?

我目前正在使用

之类的内容
  

%术语%

我希望它能够找到结果,即使它们拼写错误,例如:

字段值=“一:停止商店:

他们搜索:

One Shop Stop

OR

一站式服务

等等。我想要一个非常聪明的搜索,这样即使他们不搜索确切的东西,他们也会找到这些信息。

建立这样的智能搜索的最佳方法是什么?

5 个答案:

答案 0 :(得分:6)

like '%term%'非常缓慢且未经优化,您可能希望为此列添加全文,use boolean mode for this

match(column) against('+One +Shop +Stop' in boolean mode)

请注意最小单词长度为4,因此,您需要考虑将其更改为3,并且全文搜索仅适用于myisam

sphinx这样的其他开源搜索引擎也非常适合

答案 1 :(得分:5)

通过搜索原始数据,您无法提高效率。这种文本搜索取决于数据的索引方式(这是谷歌机器人为谷歌提供的地方)。

所以,第1步是索引。如果您的数据位于某些网页中,则可以使用标准抓取工具(甚至可以轻松构建自己的抓取工具,我建议使用python来构建抓取工具)。如果您的数据在某个文件中(不是可浏览的Web),那么对于索引,您需要编写一个程序来读取所有数据并将其编入索引。

第2步正在搜索。搜索方法取决于索引策略。

如果您正在寻找基于php-mysql的系统,请查看这些项目的代码:

http://www.phpdig.net/

http://sphinxsearch.com/

如果您想了解更多信息,请搜索IEEE Xplore / ACM出版物档案。你会收到很多关于这个主题的论文。

答案 2 :(得分:5)

AJreal是对的...只是想我会添加一个例子来帮助:

 $query = sprintf("SELECT *, "
                    . " MATCH(data) AGAINST('%s' IN BOOLEAN MODE) AS relevance "
                    . " FROM table_name"
                    . " ORDER BY relevance DESC LIMIT 20 ",

希望这有帮助

答案 3 :(得分:2)

您可以使用SOUNDEX()函数,它可以在PHP和MYSQL中使用 SOUNDEX() with MYSQL

答案 4 :(得分:0)

简单,智能且安全

timpng1在上面的Ajreal Answer上举了一个例子,我想使其安全

$conn = new mysqli('server', 'username', 'password', 'dbName');
$q = $conn->real_escape_string($_GET["query"]);
$sql = $conn->prepare("SELECT *, MATCH(col1, col2) AGAINST(? IN BOOLEAN MODE) AS relevance FROM my_table ORDER BY relevance DESC LIMIT 20");
$sql->bind_param("s", $q);
$sql->execute();
$rs = $sql->get_result();
相关问题