我在搜索中复制粘贴了一个主题标题(按显示的原样,包含特殊字符):
New Lowe's commercial with UniGeezer
没有结果:
我将搜索框中的特殊引号替换为“普通”引号:
New Lowe's commercial with UniGeezer
现在主题出现了。
我的建议是,搜索应将每个特殊字符与原始字符进行匹配。
我在搜索中复制粘贴了一个主题标题(按显示的原样,包含特殊字符):
New Lowe's commercial with UniGeezer
没有结果:
我将搜索框中的特殊引号替换为“普通”引号:
New Lowe's commercial with UniGeezer
现在主题出现了。
我的建议是,搜索应将每个特殊字符与原始字符进行匹配。
好问题,@sam,我们该如何处理这个问题?
那变音符号呢?
我们已经有针对变音符号的规范化处理,因此或许也可以采用类似的方法来解决这个问题。
@tgxworld 可以思考一下。
@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)
你能否指出你遇到此问题的具体站点,以便我能进行复现?谢谢!
我仍然遇到这个问题,问题出在我搜索用 " 包裹的精确字符串时:
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
感谢提供复现步骤。这主要影响使用 " 包裹的精确术语搜索。问题在于,话题的实际标题是 New Lowe's commercial with UniGeezer,而美化后的标题是 New Lowe’s commercial with UniGeezer。在进行精确术语搜索时,我们仅将给定术语与话题的实际标题进行匹配,而未考虑美化后的标题。
这里的难点在于,我们不能无条件地将 ’ 替换为 ',因为包含 ’ 的话题标题将无法匹配。我有点不确定该如何处理,因为在客户端显示话题标题时,我们展示的是不同的字符。
@gerhard @sam 你们之前似乎解决过类似的引号问题,对此有什么建议吗?老实说,这只是一个边缘情况,只会影响极小部分的搜索查询。我倾向于暂时搁置这个问题。
这可不是什么笑话!![]()
我想我们可以在索引和搜索词中将 ’ 规范化为 '。但老实说,我不确定是否值得为此付出巨大的精力去修复这个问题。
这与搜索索引无关。对于精确匹配,我们会将其与 Post#raw 和 Topic#title 进行比对:
明白了,是啊……这里确实没有简单的解决方案,我想这只能是我们不得不忍受的一个小问题了。