0

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

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

短语 (约 15,000 行)
phrase_id
短语
长度 (短语中的单词数)
文档 (100 秒/天)
document_id
文本

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

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

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

  1. 将文档标记为 2 个单词短语,查找以标记开头的短语
  2. 遍历增加令牌长度的结果 - if (phrase length == token length) {match} else {keep for next token length}。
  3. 将结果存储在新表中document_phrasesphrase_id , document_id

不过,这一切似乎都有很多开销,我想知道像 Sphinx 这样的外部工具是否能够更有效地做到这一点?我已经调查过了,但它似乎主要是为了搜索大量文档以获取 1 个短语,而不是在 1 个文档中搜索许多短语。

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

4

1 回答 1

0

您是否查看过全文搜索。给出的例子,以及找到相关性的能力可能会给你一些想法或替代方案。

于 2012-05-26T14:00:56.593 回答