2012-05-26 25 views
0

我有一个约15,000个多个单词短语的数据库,其长度范围从2-7个单词。我希望能够搜索一个小文档(〜1000字)以查看它包含哪些短语。我基本上正在寻找实现这一目标的最佳方式。搜索1000个Word文档15,000个词组

我已经目前有在MySQL的数据在两个表:

短语(〜15000行)
phrase_id
短语
长度(单词的短语中的数目)
文件(100s /天)
document_id
text

短语列表保持不变,新文档一直添加。

据我所知,最好的方法是使用某种索引。理想情况下,在添加文档时,它会被索引以查看它包含哪些短语,以便稍后完成搜索时,结果会立即返回。

我已经考虑如何将文件做到这一点在MySQL

  1. 记号化进入2个字词组发现其通过的结果增加了令牌长度的令牌
  2. 迭代开始短语 - 如果(短语长度==令牌长度){match} else {keep for next token length}。
  3. 将结果保存到一个新的表document_phrases phrase_id,DOCUMENT_ID

这一切似乎像很多的开销,虽然我不知道是否像狮身人面像一个外部工具将能够更有效地做到这一点?我研究过它,但它似乎主要是为了搜索大量的文档,而不是搜索1个文档中的很多短语。

是否有一些技术我完全错过了?请注意,虽然技术上有趣,但使用java/python的解决方案超出了我打算为此项目学习的内容

+1

你的算法看起来不错。 PHP对于这种字符串操作的东西非常有用。您可能希望加载每个文档的文本并使用PHP将其处理成长度为2-7的短语,然后逐个查看这些短语。对于长度合理的文件 - 圣经和博伽梵歌 - 应该是相对有效的:好的。美国的税法没有那么多。 –

回答

0

您是否看过Full Text Searches。给出的例子以及找到相关性的能力可能会给你一些想法或替代方案。

+0

非常感谢。虽然它已经通读了它,但它与我试图达到的目的相反(搜索许多文档中的几个短语,而不是搜索几个文档中的很多短语) – Jahnold