【问题标题】:Optimal way to check if given sentence(query) contains any of the predefined keywords [closed]检查给定句子(查询)是否包含任何预定义关键字的最佳方法[关闭]
【发布时间】:2020-04-23 18:40:22
【问题描述】:

这可能看起来像是一个已经回答了无数次的简单问题,但我找不到最佳方法(使用一些数据库)。

我有一个包含数千个关键字的列表(比如说辱骂性的词)。每当有人发布消息(长句或段落)时,我想检查给定的句子是否包含任何关键字,以便我可以阻止用户或采取其他行动。

我正在寻找可以解决上述问题并在几毫秒(

有很多db可以解决上述问题的逆向:给定关键字,找到包含关键字的文档(文本搜索)。

【问题讨论】:

  • 鉴于它只有几千个单词,我会将它们缓存在内存中并在那里进行检查,并使用标准查询定期从数据库中重新获取单词列表。
  • 我同意,如果只有 1000 个单词,内存词典应该可以完成这项工作。
  • 我同意。但是在这里,我们将为每个帐户设置 1-10k 个关键字。帐户数量也将在几千个范围内。

标签: mysql mongodb elasticsearch amazon-dynamodb couchbase


【解决方案1】:

为您的工作量尝试ClickHouse

根据文档:

multiMatchAny(...) 如果没有正则表达式匹配,则返回 0,如果任何模式匹配,则返回 1。它使用hyperscan 库。对于在字符串中搜索子字符串的模式,最好使用 multiSearchAny,因为它工作得更快。 任何 haystack 字符串的长度必须小于 2^32 字节。

【讨论】:

  • 谢谢。看起来不错,必须探索更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2013-05-06
相关资源
最近更新 更多