在国内搜索 sphinx 的话找到的资源好像都是挺久远的,无奈之下只好跑到国外去找了。听起来有点不可思议,但是最近整 sphinx 的时候突然想到 mediawiki 官方有 sphinx 的安装介绍,然后就去参考了,惊奇的发现里面有提到 sphinx 支持 CJK 的方法。
CJK 在这边是 Chinese, Japanese, Korean 首字母的缩写。所以如果想要在国外搜索 sphinx 支持中文、日文和韩文的话,建议使用 sphinx 和 CJK 作为关键词。
下面的内容其实总结自 Using Sphinx search engine with Chinese, Japanese, and Korean language documents ,建议英语好的或者有兴趣的人也阅读下原文。
让 sphinx 支持 CJK 的 4 个要素分别是:
1、要建立索引的资料最好是 Unicode(UTF-8) 编码,然后把 sphinx 的 charset_type 设置为 utf-8。
2、设置 CJK 专用的 charset_table ,这部分应该是最重要的。具体操作是访问 sphinx 官方提供的charset_tables 实例。在里面你可以找到 CJK 对应的列表,然后将 sphinx.conf 中 charset_table 的值设置为你复制的内容。需要注意的:内容很多,不能全写在一行里,要分多行记录;记得自行把“→”改为“->”……
3、ngram_chars,依旧是上面那个链接,在最底部有 CJK Ngram Characters ,把内容复制并设定为参数 ngram_chars 的值,注意事项同上。
4、需要把 ngram_len 设置为 1 。
另外,如果你符合了上面的条件还没有成功的话,可以试下:mediawiki 指南中有提到非英语的话记得注释掉 morphology。
ivinco.com 在上面的链接给出了支持CJK的配置范例。