2

我们的 ruby​​ on rails 应用程序使用 aho corasick gem 来查找任何给定的文本是否包含任何预先列出的坏词(这些是在加载应用程序时从静态配置中挑选出来的)。

但是,使用它会产生一些误报。例如,如果我在配置中的坏词是“abc”,那么包含“habcd”的文本也会被标记,这不是本意。

因此,我尝试将配置词从“abc”更改为“abc”(在单词前后添加空格)。但是,这有另一个缺点,即“abc is xyz”之类的文本将不会被标记,因为它应该是。所以,我还必须在我的配置中添加另外 2 个单词 - “abc”和“abc”,同样我需要在我的配置中添加“-abc”、“abc-”、“:abc”等,使配置相当大,因为除了 abc 之外还有很多这样的词。

因此,我在想是否可以在我的配置中输入某种正则表达式,例如 [",-" "]abc[",-" "] 以便涵盖上述所有情况并且不会出现误报被发现。

我们使用 gem 'aho_corasick', '0.1.0' , ruby​​ - 1.9.3 和 rails - 3.2.8

任何帮助是极大的赞赏。提前致谢!!:)

4

1 回答 1

1

解决此问题的最简单方法是使用标准实现获取所有匹配项,然后删除第一个和最后一个字符前后没有单词分隔符的匹配项。在一般情况下,不会对性能造成重大影响,因为您的匹配项很少。

于 2021-11-07T22:42:17.827 回答