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 setup search for these languages.
Contents
Below is additional information on how to configure the database for different languages.
日本語 / Japanese¶
改善された日本語の翻訳は大歓迎です。完全にここに書かれているものを交換すること自由に感じてください。
検索設定¶
MySQL: データベース構成に関する日本ご覧ください。ドキュメントを検索するにはMattermostを設定します
Postgres: ここでは、日本のために、より良い検索作業を行うための提案です
私たちは、検索に日本語ドキュメントの改善を手助けしてください
中文 / Chinese¶
数据库版本请参考: 配置要求 。 其中MySQL的ngram配置可以参考 Cannot search CJK contents 。
更多中文相关问题讨论请访问 中文讨论组 。
以Ubuntu 14.04 PosgreSQL 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', '全面');
한국어 / Korean¶
이 문제에 대한 논의는 이 이슈 에서 시작되었습니다.
한국어 버전 이용 시 문제점을 발견하면 Localization 채널 또는 한국어 채널 에서 의견을 제시할 수 있습니다.
검색을 위한 데이터베이스 설정¶
PostegreSQL : PostegreSQl 데이터베이스에서는 특별한 문제가 없기 때문에 설정이 필요하지 않습니다.
MySQl : MySQL에서는 full-text 검색문제를 해결하기 위해서 추가적인 작업이 필요합니다.
MySQL 해결 방법¶
- Ngram parser 를 이용하기 위해서는 MySQL 5.7.6버전 이상이어야 합니다.
- Mysql의 구성파일에서 ngram의 최소 토큰 크기를 다음과 같이 설정해줍니다.
[mysqld]
ft_min_word_len = 2
innodb_ft_min_word_len = 2
- 데이터 베이스를 재시작 합니다. (이 과정은 매우 중요합니다.)
- 일부 테이블의 full-text 인덱스를 다음과 같이 리빌드합니다.
- 게시물 검색을 위한 설정 ( 참조 )
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
를 ngram 없이 리빌드합니다.