mysql - 使用 innoDb 实现搜索功能的最佳方式

标签 mysql full-text-search innodb

如果索引在大型产品表中,我需要使用 innodb 对一对进行全文搜索,MyISAM 不是一个选项,因为它缺乏事务和关系支持。

我可以想到几种方法来做到这一点,插件、存储过程、带键的搜索表和 MyIsam 格式的复制索引。

您过去是如何实现这一目标的,这是最好的方法(包括我没有提到的任何方法),为什么?

插件听起来很昂贵,存储过程听起来很慢,搜索表听起来像是管理员的噩梦。

很想听听您的意见。

最佳答案

一种可能是使用外部(独立于数据库)全文引擎,例如Lucene (如果您使用的是 PHP,您可能还想看看 Zend_Search_Lucene )

有很多(一些免费的,一些昂贵的,一些开源的,一些专有的);但它们通常会让你走得比 MySQL 全文允许的更远——而且它不会集成到数据库中 (这可能是好的:例如,你可以索引文档——或坏的:你不能轻易地将这些结果与你的一个 SQL 查询结果结合起来)

使用这样一个引擎的好处是全文搜索真的是他们的工作;他们应该做得很好(并且“智能”地了解用户倾向于输入的内容)。

缺点是你必须有另一个引擎;这意味着更多的工作、更多的配置和更多的开发,因为您不能只是将它们“插入”到您的数据库中。

关于mysql - 使用 innoDb 实现搜索功能的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252135/

相关文章:

mysql - 在搜索引擎上为每个单词添加分数

ElasticSearch - cross_fields 多重匹配与模糊搜索

mysql - 单条记录按主键更新慢

mysql - 为什么我需要在 mysql (InnoDB) 中回滚 SELECT?

mysql - SQL 查找所有同源类别

php - 在 MySQL 和 PHP 中使用单行查询

mysql - 对使用 UNION 或 JOIN 感到困惑

php - 合并两个复杂查询

sql - 使用 PostgreSQL 查找流行字符串

mysql - 如何在 MySQL 中查找生成的列定义