比如我想搜索 c++
模式下的单引号问题:
条件再放宽一点,标题仍然没有命中,内容倒是有匹配(但是关键字没加粗,让人怀疑到底是不是匹配到了搜索关键字):
改用英文搜索,标题内容都有命中(并且关键字有加粗):
- https://meta.discoursecn.org/t/Discourse-中文无法搜索问题/99
- Loading...
- https://meta.discourse.org/t/chinese-search-issues/13287/26
- https://meta.discourse.org/t/search-chinese-words-problems/71761/4
- BUGFIX: Chinese search was broken · discourse/discourse@3c84876 · GitHub
- CJK search by ransack by erickguan · Pull Request #2396 · discourse/discourse · GitHub
主要从以下几个方面着手解决:
- 开启 CJK 分词:
- locale 改为 zh_CN (还有说 PostgreSQL 编码也要改,不清楚是否默认已经 utf-8)
- 开启 search tokenize chinese japanese korean
- min search term length 改为 1 (也有人说改为 2)
- 重新索引旧帖 rake search:reindex
这个问题应该引起注意,否则论坛帖子越来越多,寻求帮助却越来越困难。@guanghui.qu @xuchunyang
UPDATE 2018-05-26 15.40.50
好像并非所有中文关键字都这样,但只要一部分关键字出现这种情况,就不得不让人产生疑虑:虽然我搜到了一些结果,是不是还有更多/更匹配的条目没有被搜索到?
UPDATE 2018-05-26 15.55.10
我明白了,这是分词造成的。比如搜索电子书
没有任何结果,必须拆开为电子 书
,但是 电 子 书
又不行。类似还有输入法
,所以要搜索中文还要猜测机器如何分词?真是让人头痛的问题。