构建mySQL和PHP搜索的最佳方法是什么?
我目前正在使用像
%术语%
我希望它能够找到结果,即使它们拼写错误,例如:
字段值="一:停止商店:
他们搜索:
一个商店站
要么
一站式商店
等等..我想要一个非常聪明的搜索,所以即使他们不搜索确切的东西,他们也会找到这些信息.
构建这样的智能搜索的最佳方法是什么?
like '%term%'是非常缓慢和未经优化的,您可能希望为此列添加全文,并使用布尔模式
如
match(column) against('+One +Shop +Stop' in boolean mode)
Run Code Online (Sandbox Code Playgroud)
注意最小单词长度为4,因此,您需要考虑将其更改为3,并且全文搜索仅适用于myisam
像sphinx这样的其他开源搜索引擎也非常适合这种情况
通过搜索原始数据,您无法提高效率.这种文本搜索取决于数据的索引方式(这是Google bot为Google提供的).
所以,第1步是索引.如果您的数据位于某些网页中,则可以使用标准抓取工具(甚至可以轻松构建自己的抓取工具,我建议使用python来构建抓取工具).如果您的数据在某个文件中(不是可浏览的Web),那么对于索引,您需要编写一个程序来读取所有数据并将其编入索引.
第2步是搜索.搜索方法取决于索引策略.
如果您正在寻找基于php-mysql的系统,请查看这些项目的代码:
如果您想了解更多信息,请在IEEE Xplore/ACM出版物档案中进行搜索.你会收到很多关于这个主题的论文.
小智 5
AJreal是对的...只是想我会添加一个示例来帮助:
$query = sprintf("SELECT *, "
. " MATCH(data) AGAINST('%s' IN BOOLEAN MODE) AS relevance "
. " FROM table_name"
. " ORDER BY relevance DESC LIMIT 20 ",
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助