搜索1000个Word文档以获得15,000个短语

时间:2012-05-26 10:06:44

标签: php mysql full-text-search sphinx

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

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

词组 (~15,000行)
phrase_id
短语
长度(短语中的单词数)
文件 (100 /天)
DOCUMENT_ID
文字

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

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

我已经考虑过在MySQL中如何做到这一点

  1. 将文档标记为2个单词短语,查找以令牌开头的短语
  2. 迭代结果,增加令牌的长度 - if(短语长度==令牌长度){match} else {keep for next token length}。
  3. 将结果存储在新表 document_phrases phrase_id,document_id
  4. 这一切似乎都是很多开销,我想知道像Sphinx这样的外部工具能否更有效地做到这一点?我已经调查了它,但它似乎主要用于搜索1个短语的大量文档,而不是搜索1个文档中的许多短语。

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

1 个答案:

答案 0 :(得分:0)

你有没有看过Full Text Searches。给出的示例以及找到相关性的能力可能会为您提供一些想法或替代方案。