MySQL:搜索文件内容的最佳方式(全文搜索)

时间:2011-02-09 20:13:02

标签: mysql full-text-search fulltext-index inverted-index

我目前正在开发一个网站,允许用户上传演示文稿,文档和电子书(类似scribd和slideshare),因此我需要能够搜索文件的内容。我目前正在从txt文件中的文件中提取文本。 我正在考虑使用MySQL的两个选项:

  1. 将纯文本存储在单独的表中,并使用mysql的全文索引来搜索它。
  2. 使用倒排索引存储单词并搜索它们。 (2个新表 - 文档表中的单词和多对多表)。现在,在这种情况下,我可以做些什么来重复与结果更相关的单词。
  3. 该文本仅用于搜索。 (1)的问题是电子书的文本可能很大,所以我考虑将其限制在(例如)50kb或更少。 (2)电子书中也有许多单词存在问题,而这些单词又有限。

    因此,您可以指导我找到索引文本的最佳方式,并能够快速进行全文搜索。在这种情况下,我需要充分利用mysql。

1 个答案:

答案 0 :(得分:0)

我决定按照Rob Di Marco的建议使用Sphinx。事实证明它是那里最快(和开源)的FullText搜索引擎。我在编译和使SphinxSE没有崩溃mysql时遇到了一些麻烦所以我现在使用包含插件的MariaDB。

由于RealTime索引,我选择了版本1.10。这意味着如果只添加一行,则无需等待索引器事件重建整个索引。 (我知道主要的+ delta解决方法,但这样更容易配置和使用SphinxQL)

另见Some questions related to SphinxSE and RT indexes