您将使用哪些技术在MySql中的一个非常大的表上的列中搜索内容?例如,假设您在数据库的表中存储了10.000.000封电子邮件,并且希望实现主题搜索,这将使我能够搜索电子邮件主题中存在的一个或多个单词.如果用户搜索"圣诞老人圣诞节",您应该找到一封电子邮件,其中包括"圣诞老人拜访我们这个圣诞节"和"圣诞节,圣诞老人会永远展示".
我的想法是处理主题中的所有单词(删除所有数字,特殊符号,逗号等)并将每个单词保存在索引表中,其中我在单词列上有唯一索引.然后我会通过多对多关系表将它链接到电子邮件表.
有没有更好的方法在非常大的表上执行通配符搜索?
是否存在本机支持此类搜索的数据库?
如果您使用MyISAM作为存储引擎,则可以使用FULLTEXT索引.但是,MySQL一般用文本搜索不是很好.
一个更好的选择是采用专用的文本索引解决方案,如Lucene或Sphinx.我个人推荐Sphinx - 它与PHP和MySQL有很好的集成,非常非常快(可以用来加速普通查询 - 执行非常快速的分组和排序).
维基百科有一个很好的不同索引引擎列表 - 在这里.