如果索引在大型产品表中,我需要在一对夫妇上实现全文搜索,使用innodb,由于缺乏事务和关系支持,MyISAM 不是一个选项。
我可以想到几种方法,插件、存储过程、带键的搜索表和 MyIsam 格式的复制索引。
您过去是如何做到这一点的,这是最好的方法(包括我没有提到的任何方法),为什么?
该插件听起来很昂贵,存储过程听起来很慢,搜索表听起来像是管理员的噩梦。
喜欢听听你的意见。
如果索引在大型产品表中,我需要在一对夫妇上实现全文搜索,使用innodb,由于缺乏事务和关系支持,MyISAM 不是一个选项。
我可以想到几种方法,插件、存储过程、带键的搜索表和 MyIsam 格式的复制索引。
您过去是如何做到这一点的,这是最好的方法(包括我没有提到的任何方法),为什么?
该插件听起来很昂贵,存储过程听起来很慢,搜索表听起来像是管理员的噩梦。
喜欢听听你的意见。
一种可能是使用外部(独立于数据库)全文引擎,例如Lucene (如果您使用的是 PHP,您可能还想看看Zend_Search_Lucene
)
有很多(一些免费的,一些昂贵的,一些开源的,一些专有的);但它们通常会让你走得比 MySQL 全文允许的更远——而且它不会集成到数据库中(这可能是好的:你可以索引文档,例如——或者坏的:你可以' t 将这些结果与您的 SQL 查询结果之一轻松连接)
使用这样一个引擎的好处是全文搜索确实是他们的工作;他们应该做得很好(并且对用户倾向于输入的内容保持“智能”)。
缺点是你必须有另一个引擎;这意味着更多的工作、更多的配置和更多的开发,因为您不能只是将它们“插入”到您的数据库中。
看看狮身人面像搜索
Xapian 做了一套很好的 php 绑定,和其他一些一样,xapian 可以作为单独的服务器运行,在端口上侦听搜索请求,非常适合在多个站点之间共享内容。
“你的意思是”功能在 xapian 中存在,但在远程服务器版本中不存在(尚未)