如何在文字段落中找到关键词?

时间:2019-04-12 14:17:27

标签: javascript database caching indexing full-text-search

我正在尝试找到一种快速的(毫秒或秒)解决方案,以使其具有输入的文本块和大量(1100万个)特定单词/词组进行测试。所以我想看看输入段落中有哪些单词/短语?

我们使用Javascript,并将SQL,MongoDB和DynamoDB作为现有数据存储库,我们可以将该解决方案集成到其中。

我已经完成了有关此问题的搜索,但是只能查找文本中是否存在单词。并非如此。

欢迎所有想法!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您希望消除尽可能多的不必要数据。假设顺序很重要:

  1. 首先,请确保在基于短语的短语数据库上建立了B树索引。这将加快范围查找时间。
  2. n = 2(如果您喜欢的话,则为1)
  3. 将文本块拆分为长度为n的短语,并对字典中以任何短语对('My Phrase%'开头的短语进行查询。由于使用了索引,因此不会执行45.21亿个字符串比较。
  4. 记住完全匹配的短语
  5. n = n + 1
  6. 使用精简字典从第3步重复进行,直到精简字典为空

您还可以根据要查找的匹配类型在此处和那里进行小的优化,例如,不使用标点符号匹配,仅匹配特定单词长度的短语等。无论如何,我希望时间瓶颈在于磁盘访问,而不是实际比较。

此外,我很确定我是基于现有算法创建此算法的,但是我不记得它的名字了,因此奖励指向任何可以命名它的人。我认为这与数据仓库/挖掘以及计算频率和模式有关吗?