这techniqes你会用它来实现对内容列在MySQL的一个非常大的表中的搜索?例如说,你必须存储在数据库中的表10.000.000电子邮件和想实现一个主题检索,这将使我要搜索的是出现在电子邮件主题的一个或多个单词。如果用户搜索“圣诞老人”,你应该找到像“圣诞老人访问我们这个圣诞节”和“圣诞节,圣诞老人会永远显示”。

科目电子邮件

我的想法是在处理对象的所有单词(去除所有数字,特殊符号,逗号等),保存每个字中的索引表,其中,I对单词列的唯一索引。然后我会链接到电子邮件表由多对多的关系表。

有没有执行通配符更好的方法搜索满足非常大的表?

是否有原生支持这种搜索的数据库?

有帮助吗?

解决方案

如果您正在使用的MyISAM作为存储引擎,您可以使用FULLTEXT索引。然而,MySQL的一般不是很好用的文本搜索。

一个更好的选择是去与专用文本索引溶液如 Lucene的狮身人面像。我个人建议你狮身人面像 - 它与PHP和MySQL的大整合,是非常,非常快。(可用于加快即使是普通的查询 - 执行速度非常快分组和排序)

维基百科有不同的索引引擎的一个很好的列表 - 这里

其他提示

MySQL的MyISAM表支持 FULLTEXT 索引,这有助于在这种搜索。

但它并不适用于这种搜索的最快的技术。而且你不能使用它存储在InnoDB表的数据。

我听说过狮身人面像搜索一些好东西,但我还没有使用它。

下面是关于狮身人面像另一篇博客: http://capttofu.livejournal.com/13037.html

这听起来全文搜索,其中SQL Server支持。

但你的想法是一般的声音。你有效地计算提前,以加快搜索您的表中的“索引”。

您想看看MATCH...AGAINST功能。

请参阅,例如:使用MySQL全文搜索

检查 “全文搜索” 在MySQL的文档(AFAIK,目前所有DBMS支持此)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top