如何设计关键字数量巨大的全文搜索算法(如Google快讯)?

时间:2013-09-03 02:36:52

标签: regex full-text-search extract normalization automata

我正在构建与Google快讯非常相似的内容。如果您不知道它是什么,请考虑以下方案,

  1. 每天都有成千上万的新文章,博客文章涌入
  2. 每位用户都有一个他想订阅
  3. 的收藏“关键字”列表
  4. 有数百万用户拥有百万关键字
  5. 我们扫描每篇文章/博客文章,寻找每个关键字
  6. 如果特定关键字匹配,请通知每个用户。
  7. 对于一个关键字,对数千篇文章进行基本的全文搜索很容易,但如何使用百万个关键字有效地进行全文搜索?

    由于我没有强大的CS回溯,我唯一的想法就是将所有关键字编译成regex或者自动机,这样做会有效吗? (就像谷歌的re2

    我认为我在这里有一些重要的事情。就像将这些关键字编译成一些高级数据结构一样。由于许多关键字是相似的(例如复数形式,简单AND,非逻辑等)。在进入此之前,我还需要了解任何先前的理论吗?

    欢迎所有建议,谢谢!

1 个答案:

答案 0 :(得分:0)

我可以想到以下几点:(1)确保每个搜索查询都非常快。毫秒级性能非常重要。 (2)使用相同的关键字对多个查询进行分组,并为每个组执行单个查询。

由于不同的查询使用不同的关键字和AND / OR操作,我没有看到其他方法对它们进行分组。