搜索应将特殊字符与其“常规”等效字符匹配

我在搜索中复制粘贴了一个主题标题(按显示的原样,包含特殊字符):
New Lowe's commercial with UniGeezer

没有结果:

我将搜索框中的特殊引号替换为“普通”引号:
New Lowe's commercial with UniGeezer

现在主题出现了。

我的建议是,搜索应将每个特殊字符与原始字符进行匹配。

8 个赞

好问题,@sam,我们该如何处理这个问题?

3 个赞

那变音符号呢?

我们已经有针对变音符号的规范化处理,因此或许也可以采用类似的方法来解决这个问题。

@tgxworld 可以思考一下。

3 个赞

@Canapin 你还能复现这个问题吗?我尝试在本地复现但未能成功。搜索数据中的撇号已被移除,因此不应影响搜索功能。

discourse_development=# SELECT TO_TSVECTOR('english', 'New Lowe’s commercial with UniGeezer') @@ PLAINTO_TSQUERY('english', 'New Lowe’s commercial with UniGeezer');
 ?column? 
----------
 t
(1 row)

你能否指出你遇到此问题的具体站点,以便我能进行复现?谢谢!

1 个赞

我仍然遇到这个问题,问题出在我搜索用 " 包裹的精确字符串时:

https://unicyclist.com/search?q=%22New%20Lowe%E2%80%99s%20commercial%20with%20UniGeezer%22

https://unicyclist.com/search?q=%22New%20Lowe%27s%20commercial%20with%20UniGeezer%22

1 个赞

感谢提供复现步骤。这主要影响使用 " 包裹的精确术语搜索。问题在于,话题的实际标题是 New Lowe's commercial with UniGeezer,而美化后的标题是 New Lowe’s commercial with UniGeezer。在进行精确术语搜索时,我们仅将给定术语与话题的实际标题进行匹配,而未考虑美化后的标题。

这里的难点在于,我们不能无条件地将 替换为 ',因为包含 的话题标题将无法匹配。我有点不确定该如何处理,因为在客户端显示话题标题时,我们展示的是不同的字符。

@gerhard @sam 你们之前似乎解决过类似的引号问题,对此有什么建议吗?老实说,这只是一个边缘情况,只会影响极小部分的搜索查询。我倾向于暂时搁置这个问题。

1 个赞

这可不是什么笑话!:stuck_out_tongue_winking_eye:

我想我们可以在索引和搜索词中将 规范化为 '。但老实说,我不确定是否值得为此付出巨大的精力去修复这个问题。

1 个赞

这与搜索索引无关。对于精确匹配,我们会将其与 Post#rawTopic#title 进行比对:

1 个赞

明白了,是啊……这里确实没有简单的解决方案,我想这只能是我们不得不忍受的一个小问题了。

2 个赞