2011-02-09 176 views
1

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

  1. 储存在一个单独的表和使用MySQL的全文索引,通过它来搜索纯文本。
  2. 使用倒排索引来存储单词并在其中搜索。 (2个新表格 - 文档表格中的文字和多对多文件)。现在,在这种情况下,我能做些什么来重复与结果更相关的单词。

该文本将仅用于搜索。 (1)的问题是电子书的文本可能很大,所以我认为将其限制为(例如)50kb或更少。 (2)在电子书中的大量词语也存在问题,这些词语可能受到限制。

所以,你能指导我寻找文本的最佳方法,并能够快速全文搜索。在这种情况下,我需要充分利用mysql。

+1

你有没有使用狮身人面像考虑(http://sphinxsearch.com/about/sphinx/) ?听起来这很适合你的问题和技术堆栈。 –

+0

听起来不错,但我也有一个标记系统,我可以同时搜索两者吗?我的意思是,搜索标签和文本,并根据全文的相关性和特定标签的存在性对结果进行排序。 另外,我可以给狮身人面像的全文(一些txt文件大小超过200kb)?这是Sphinx处理的问题吗?这种情况下的性能折衷是什么?我的意思是,它值得吗? – stormbreaker

回答

0

我决定使用Rob Di Marco建议的狮身人面像。事实证明,这是最快(也是开源)的FullText搜索引擎。编译和获取SphinxSE不会使mysql崩溃,所以我现在使用包含插件的MariaDB。

由于RealTime索引,我选择了版本1.10。这意味着如果你只需添加一行,就不需要等待索引器重建整个索引。 (我知道的主+三角的解决方法,但是这是比较容易的方式来配置和使用SphinxQL使用)

又见Some questions related to SphinxSE and RT indexes