此问题是在我对短字符串(例如“art”)设置自动标签规范时发现的。结果导致自动标签将“artificial”等词标记为相关主题。
附注:自动标签规范页面上的“测试”功能运行正常(针对“art”的自动标签测试中,“artificial”不会生成标签)。
该问题可能尚未被注意到,因为对短词进行自动标签的情况或许并不常见。
此问题是在我对短字符串(例如“art”)设置自动标签规范时发现的。结果导致自动标签将“artificial”等词标记为相关主题。
附注:自动标签规范页面上的“测试”功能运行正常(针对“art”的自动标签测试中,“artificial”不会生成标签)。
该问题可能尚未被注意到,因为对短词进行自动标签的情况或许并不常见。
我想 @codinghorror 也注意到了这一点。这已在我们的待办清单中,我们会尽快处理。
我已修复此 bug 并进行了替换,链接和标签中的监控词现在将作用于整个单词。
当启用 watched_words_regular_expressions 时存在例外情况。
感谢您的回复,Bianca。
我想我默认启用了 watched_word_regular_expression,却没意识到这会破坏“针对完整单词操作”的功能。针对完整单词操作与正则表达式不兼容是必要的吗?
也就是说,我是否仍应将其视为一个 bug,还是由另一项功能导致的必要限制?
目前,我仍将其视为一个 bug。我没有理由认为,当指定了正则表达式时,非正则表达式的完整单词解析会与正则表达式解析不兼容。
嘿,Norman,
如果你在部分关注词中使用了正则表达式,那么它将适用于所有词。因此,如果启用了正则表达式,并且你为 art 配置了自动标签,那么 artificial 也会被标记。如果只想匹配单词 art,请使用单词边界元字符 \\b。对于 art 来说,写法应为 \\bart\\b。
我们需要确保 UI 在启用该选项时予以提示,因为此时该字段的含义会发生显著变化。
这类似于输入密码时显示“大写锁定已开启”等提示。
非常感谢大家。如果我对正则表达式相当浅显的理解有所欠缺,导致我误解了它们在“监控词”中的工作原理,我深表歉意。但……有几点需要说明:
我原本以为正则表达式的上下文会被视为“词边界内的字符串”。还有什么更合理的解释呢?肯定不是整个主题文档吧?在这种情况下,若要标记“artificial”,我就需要指定 art*(或 art.* 之类的写法,正如本主题标题中提到的那样)。
Joshua:谢谢你关于词边界元字符的建议。我刚刚试过了,但不起作用。无论是在“测试”功能中还是在实际应用中都不行。所以……目前看来似乎没有变通方法(或者说没有“正确的方式”来实现期望的行为)。
“测试”功能非常好。它的表现完全符合我的直觉预期。art 仅在出现单词“art”时触发(不会在“artificial”上触发),而 art* 则如预期那样在“artificial”上触发。此外,art* life 既能匹配“art life”,也能匹配“artificial life”。我还曾以为,如果我只输入单个单词,“测试”功能可能不会使用正则表达式解析,但事实并非如此……foo* art 会匹配“foobar art”,但不会匹配“foobar artificial”。所以……编写“测试”功能的人思考方式和我一样(我想是这样)。
总之:
watched_words_regular_expressions,这很好。\\bart\\b 来实现期望的行为”),我很乐意采用。再次感谢大家对这个相对次要的问题的关注,毕竟这是一个非常出色的平台!
能否确保将此任务分配给 @zogstrip?
但是 Bianca,
我尝试使用 \bart\b 时,它并没有在“art”或“artificial”上触发(本来就不应该触发)。
这次尝试是为了自动标签功能。
请问,为什么我们不能直接使用现有的 Test 函数来解析主题(以实现自动标签)呢?
你好,Norman,
如果您的站点设置启用了“观察词语正则表达式”,则必须使用 \b,其中 \b 表示单词边界。如果该站点设置已禁用,则无需手动添加,因为单词边界会自动包含。
我刚刚测试过,这对我来说运行正常,包括测试弹窗:
我已经实现了该功能,在最新版本中应该可以正常工作。
你好,Bianca,
非常感谢你对此事的关注。
* 通配符,它会自动生效。现在我明白了并非如此,因此我的 \bart\b 尝试失败也就不足为奇了。再次感谢!