如果索引在大型产品表中,我需要使用 innodb 对一对进行全文搜索,MyISAM 不是一个选项,因为它缺乏事务和关系支持。
我可以想到几种方法来做到这一点,插件、存储过程、带键的搜索表和 MyIsam 格式的复制索引。
您过去是如何实现这一目标的,这是最好的方法(包括我没有提到的任何方法),为什么?
插件听起来很昂贵,存储过程听起来很慢,搜索表听起来像是管理员的噩梦。
很想听听您的意见。
最佳答案
一种可能是使用外部(独立于数据库)全文引擎,例如Lucene (如果您使用的是 PHP,您可能还想看看 Zend_Search_Lucene
)
有很多(一些免费的,一些昂贵的,一些开源的,一些专有的);但它们通常会让你走得比 MySQL 全文允许的更远——而且它不会集成到数据库中 (这可能是好的:例如,你可以索引文档——或坏的:你不能轻易地将这些结果与你的一个 SQL 查询结果结合起来)
使用这样一个引擎的好处是全文搜索真的是他们的工作;他们应该做得很好(并且“智能”地了解用户倾向于输入的内容)。
缺点是你必须有另一个引擎;这意味着更多的工作、更多的配置和更多的开发,因为您不能只是将它们“插入”到您的数据库中。
关于mysql - 使用 innoDb 实现搜索功能的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252135/