我是风暴框架中的新手(https://storm.incubator.apache.org/about/integrates.html), 我用我的代码进行本地测试,我认为如果删除停用词,它会表现良好,但我在网上搜索,我看不到任何在风暴中删除停用词的例子。
答案 0 :(得分:2)
如果停用词列表的大小足够小以适应内存,最直接的方法是简单地使用知道该列表的风暴Filter
的实现过滤元组。如果此列表随着时间的推移而演变,则此Filter
可能会经常轮询数据库以获取最新的停用词列表。
如果停用词列表的大小较大,则可以使用QueryFunction
从拓扑中使用stateQuery
函数调用,其中包含:{/ p>
+之后添加Filter
以根据该布尔值进行过滤。
如果你觉得有冒险精神:
另一种更快的方法是使用bloom filter approximation。我听说Algebird是为了提供这种功能并且针对烫伤和风暴(这有多酷?),但我不知道它有多稳定,也没有任何实际经验将它插入风暴(如果天气多雨,可能是星期天......)。
此外,Cascading(与Storm没有直接关系但在地图上有一组非常相似的原始抽象减少)在this tutorial中建议了一种基于左连接的方法。 Storm中存在这样的连接,并且右边的分支可能每次都有FixedBatchSpout发出所有停用词,或者甚至是每次都从持久性中读取停止词列表的最新版本的自定义spout,所以也许那也行吗?也许?这也假设停用词列表的大小相对较小。