某些语言中搜索结果未高亮显示

你好!在我的 Discourse 2.5.0.beta1 安装中,如果搜索语言不是英语,搜索结果中搜索关键词的高亮功能无法正常工作。这是一个 bug 还是特性?谢谢!

这里期待什么 @sam

我们仅高亮完整单词。这看起来像是一个不完整的单词。

你好!期望找到的关键词能像这样高亮显示:

抱歉,此情况不适用:

@vinothkannans 能否快速查看一下:

@smith 能否在这里发布一条包含确切希腊单词的帖子?(我认为这是希腊语)这可能是我们高亮 JavaScript 库中的一个错误。

这是西里尔字母,不过它源自希腊字母。以下是一些示例:

因为圣灵和我们定意不将别的重担放在你们身上,惟有几件事是不可少的:就是禁戒祭偶像的物和血,并勒死的牲畜和奸淫。这几件你们若能自己禁戒不犯,那就好了。愿你们平安。

问题出在 jQuery Highlight 插件中。该插件使用单词边界 \b 正则表达式来高亮单词,但该表达式不支持 Unicode 字符。

https://medium.com/@shiba1014/regex-word-boundaries-with-unicode-207794f6e7ed

(?<=[\s,.:;"']|^)UNICODE_WORD(?=[\s,.:;"']|$)

这看起来是一个可行的解决方案:思考中

我认为 @gerhard 已经处理过这个关于 Unicode 用户名的特定问题(至少我模糊地记得)。

非常高兴看到这里有修复方案,但我们必须格外小心,确保所选的正则表达式在某些文本很长或特别复杂的情况下不会出现性能极差的情况。另外,我认为在中文里,我们甚至不需要考虑词边界?

已创建包含修复的新 PR