搜索似乎无法用于带有表情符号的标签

我有一些包含表情符号的标签,例如 new-york-city-🇺🇸。
在使用搜索和高级搜索时,我无法找到相关主题。

示例如下:
查询:
https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸subway

以下是应该被返回的主题:
https://urbantech-forum.cornelltech.io/t/subway-accessibility-info-and-elevator-escalator-status-alerts/139

1 个赞

不确定这个问题能否解决,@neil 你怎么看?

据我所知,这仅仅是因为我们这里的正则表达式:

不支持表情符号。如果它能匹配表情符号,之后就能正常工作了。

我们或许可以考虑使用类似 GitHub - ticky/ruby-emoji-regex: 💎 A set of Ruby regular expressions for matching Unicode Emoji symbols. · GitHub 这样的库,以获得一个完善的表情符号正则表达式。

你怎么看,@sam?

1 个赞

天哪,这感觉像是为了一个重大的边缘情况而支撑一个庞大的怪物。我们已经在 Tag 类上有了验证用的正则表达式吗?

1 个赞

我不确定我们是否有,不过可能我错了,@neil 应该更清楚。
据我所知,我们只有这个 clean_tag 函数:

它在客户端也被大致复制了一份:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/select-kit/mixins/tags.js.es6#L80

另外,这个函数在其他地方可能也很有用,例如我们在这里在客户端生成内容:https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/emoji.js.es6#L24

2 个赞

我怀疑我们是否有任何针对表情符号标签名的测试。也许我们可以在 2.5 版本中考虑支持这个功能?

4 个赞

我注意到,当仅使用标签(不带 subway 关键词)进行搜索时,搜索只返回一个主题(并非 OP 中发布的那个主题):

https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸

使用其他关键词时也会出现同样的情况(但仅限于之前返回的那个主题):

https://urbantech-forum.cornelltech.io/search?expanded=true&q=tags%3Anew-york-city-🇺🇸%20personal

如果我不使用标签,搜索结果则正确:

https://urbantech-forum.cornelltech.io/search?expanded=true&q=new-york-city-🇺🇸

之前通过标签返回的那个主题,在使用包含标签名称的关键词时是第一个结果,但对应的帖子却是另一个(这可能是因为帖子中某些元数据或其他类似内容被搜索到,而非标签本身,但我无法确定)。