Chinese, Japanese, and Korean search
Enabling search for Chinese, Japanese and Korean (CJK) requires special configuration, since these languages do not contain spaces.
- See database requirements documentation for how to set up search for these languages. 
Contents
Below is additional information on how to configure the database for different languages.
中文 / Chinese
数据库版本请参考: 配置要求 。 其中MySQL的ngram配置可以参考 Cannot search CJK contents 。
更多中文相关问题讨论请访问 中文讨论组 。
以Ubuntu 14.04 PostgreSQL 9.3 数据库 mattermost 为例。
编译scws
wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2 | tar xjf -
cd scws-1.2.2
./configure
make install
编译zhparser
sudo apt-get install --yes postgresql-server-dev-9.3 libpq-dev
git clone https://github.com/amutu/zhparser.git
SCWS_HOME=/usr/local make && make install
Note
通过 Docker 镜像(mattermost/mattermost-prod-db)应用数据库的用户,请按照下述方法安装依赖项。
# Alpine 通过 apk add 命令安装依赖项
apk add wget tar gcc git postgresql-dev
创建extension以及增加解析配置
sudo -i -u postgres
psql mattermost -c 'CREATE EXTENSION zhparser'
psql mattermost -c 'CREATE TEXT SEARCH CONFIGURATION simple_zh_cfg (PARSER = zhparser);'
psql mattermost -c 'ALTER TEXT SEARCH CONFIGURATION simple_zh_cfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;'
设置postgresql
将 /etc/postgresql/9.3/main/postgresql.conf 中 default_text_search_config 的值更改为 simple_zh_cfg,然后重启postgresql: sudo service postgresql restart
调试
可以打开 mattermost 的配置 config/config.json 中 SqlSettings 的设置 Trace: true,然后可以在mattermost的标准输出看到执行的SQL语句。
SELECT to_tsvector('simple_zh_cfg', '开始全面整修道路');
SELECT to_tsvector('simple_zh_cfg', '开始全面整修道路') @@ to_tsquery('simple_zh_cfg', '全面');
SELECT * FROM Posts WHERE Message @@ to_tsquery('simple_zh_cfg', '全面');
日本語 / Japanese
日本語翻訳の改善は大歓迎です。自由に変更していただいて結構です。
한국어 / Korean
이 문제에 대한 논의는 이 이슈 에서 시작되었습니다.
한국어 버전 이용 시 문제점을 발견하면 Localization 채널 또는 한국어 채널 에서 의견을 제시할 수 있습니다.
검색을 위한 데이터베이스 설정
PostgreSQL: PostgreSQL 데이터베이스에서는 따로 설정이 필요하지 않습니다.
MySQL: MySQL에서는 전문 검색(Full-text search) 기능에 제한이 있기 때문에 추가적인 작업이 필요합니다.
MySQL 해결 방법
- n-gram parser 를 이용하기 위해서는 MySQL의 버전이 5.7.6 이상이어야 합니다. 
- MySQL의 구성 파일에서 n-gram의 최소 토큰 크기를 다음과 같이 설정합니다. 
[mysqld]
ft_min_word_len = 2
innodb_ft_min_word_len = 2
- 데이터베이스를 재시작합니다. (이 과정은 반드시 필요합니다.) 
- 일부 테이블의 전문 검색 색인을 다음과 같이 재구성합니다. 
- 게시물 검색을 위한 설정 ( 참조 ) 
DROP INDEX idx_posts_message_txt ON Posts;
CREATE FULLTEXT INDEX idx_posts_message_txt ON Posts (Message) WITH PARSER ngram;
- 해시 태그 검색을 위한 설정 ( 참조 ) 
DROP INDEX idx_posts_hashtags_txt ON Posts;
CREATE FULLTEXT INDEX idx_posts_hashtags_txt ON Posts (Hashtags) WITH PARSER ngram;
- 사용자 검색을 위한 설정 - Users.idx_users_txt_all과- Users.idx_users_names_all을 n-gram 없이 재구성합니다.