用仇恨词过滤掉Elasticsearch结果的最佳解决方案是什么?

时间:2015-04-28 23:04:12

标签: elasticsearch

我想在我的ealsticsearch结果中过滤出带有仇恨词的文档。目前,我们在每个搜索查询中都有bool过滤器来查找所有单词的列表。这导致了大量的慢查询,因为仇恨词的列表很长(围绕着仇恨:()

我想知道这种垃圾邮件/仇恨词过滤的最佳做法是什么。

以下是我们正在考虑的事项:

  1. 预处理:在编制索引之前扫描文档,因此将其标记为错误或不对其进行索引。 问题:文档是从多个进程编制索引的,并且很难强制规则对任何人编写的任何新组件。

  2. 创建一个过滤器并定期运行(不确定最佳频率和时间)将所有带有坏词的文件标记为" badDoc" :是的。因此在所有查询中都有一个过滤器。 问题:由于定期运行过滤器而不确定性能影响,其次是所有查询中排除badDoc的相同问题

  3. 我个人赞成纯ES解决方案,我相信这不是一个新问题,因此寻求专家指导和最佳实践。

    谢谢和问候 VARUN

1 个答案:

答案 0 :(得分:3)

使用过滤器标记为坏文档还需要定义一个过滤器,其中包含所有"讨厌单词的搜索条件"。

没有过滤器的一种可能的解决方案可能是定义同义词列表(如果尚未使用)或扩展分析器中已有的同义词文件。您可以为所有"讨厌的单词定义一个同义词"这样他们就可以用一个单词来代替" badbaddocument"。现在,在查询期间,您可以使用包含单个术语的简单布尔过滤器来过滤掉不良文档。