在php / mysql中搜索拼写错误的最佳方法是什么?

时间:2009-07-29 04:55:55

标签: php mysql search full-text-search

我有一个列出电影的网站。当然人们在搜索电影时会出现拼写错误,当然有些电影有撇号,用字母拼出标题中的数字等等。

如何让我的搜索脚本忽略这些错误?可能需要比WHERE mov_title LIKE '%keyword%'更聪明的东西。

有人建议我使用全文搜索引擎,但所有这些看起来都非常复杂,我觉得将它们构建到我的应用程序中就像地狱一样。如果我必须使用一个,哪个是最不具侵入性的,那么在现有代码中实现最无痛苦?

3 个答案:

答案 0 :(得分:6)

我认为您必须实施外部全文搜索引擎。 MySQL只是不擅长全文搜索。我会说你应该给Lucene一个去(tutorials)。插入Lucene的Zend Framework has an API,使其更容易学习和使用。

答案 1 :(得分:1)

假设你使用MySQL - MySQL没有能够做到这一点的内置功能。<​​/ p>

这意味着您必须自己实施全文搜索,或使用第三方全文搜索工具。

  • 如果你自己实现它,你应该查看metaphonedouble metaphone算法(我推荐它们超过soundex,这在这类任务上并不是那么好),以便存储所有单词的phoenetic表示。但是,建立自己的全文搜索对于胆小的人来说不是任务。如果您不认为自己是数据库向导,请不要尝试。
  • 如果您想要第三方工具,Lucene即可。它被移植到大量不同的语言/平台including PHP中 - 您不必使用Java。

答案 2 :(得分:0)

我既不使用php也不使用mysql,但全文搜索的替代方法可能是soundex searches