浏览 5275 次
锁定老帖子 主题:Thinking-sphinx 的中文支持
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-14
最后修改:2009-10-14
thinking-sphinx自身是支持utf8, 不过打了中文补丁的Sphinx编码需要设置为zh_cn.utf8,但thinking-sphinx目前并没有自定义的扩展,所以就需要hack一下, 主要为中文检查添加了两个option: 引用 charset_type: zh_cn.utf-8
charset_dictpath: dict/path 使用时只需要在sphinx.yml里做相应设置即可. hack后的插件地址为: http://github.com/raecoo/thinking-sphinx-chinese 为了支持中文对以下三个文件进行了hack,目前看起来即使升级新版本也应该不会有什么影响. 引用 lib/thinking_sphinx/configuration.rb
vendor/riddle/lib/riddle/configuration/index.rb 对以上两文件的修改主要是为了添加charset_dictpath这个自定义的变量,方便生成配置文件时使用 引用 lib/thinking_sphinx/source.rb
source.rb的utf8?方法是修改的重点,此方法仅对utf-8编码进行判断. 此方法的作用是为生成的sphinx配置文件中SQL语句部分关于编码设置的一条语句. 特别是针对中文此语句也是最为重要的一句,相信遇到过编码问题的人一看就明白 引用 sql_query_pre = SET NAMES utf8
共修改了三个文件, 添加的字符数也不到50个即可解决TS的中文检索. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-14
不错,我以前也实现过
http://github.com/saberma/thinking-sphinx/commits/v0.9.5chinese 把uni.lib放到rails项目的lib更方便管理 修正ts 0.9.5版本delta update不生效的问题 |
|
返回顶楼 | |
发表时间:2009-10-14
最后修改:2009-10-14
嗯,你之前做的那个版本也有试过,一朋友在生产环境用的也是你那个版本,不过最近TS更新了几个我比较关心的功能所以就又动手搞了一下,好在修改的地方不会影响到核心功能
|
|
返回顶楼 | |
发表时间:2009-10-14
是的,TS更新还是很快
不过,我现在用ferret了 |
|
返回顶楼 | |
发表时间:2009-10-16
关键在于sphinx的配置文件里加上了
charset_type: zh_cn.utf-8 charset_dictpath: dict/path 就可以啦,貌似除了生成配置文件之外,中文搜索跟TS没啥关系,真正有关系的是sphinx引擎. |
|
返回顶楼 | |
发表时间:2009-10-16
yangzhihuan 写道 关键在于sphinx的配置文件里加上了
charset_type: zh_cn.utf-8 charset_dictpath: dict/path 就可以啦,貌似除了生成配置文件之外,中文搜索跟TS没啥关系,真正有关系的是sphinx引擎. 请用原生TS尝试你说的方法后再回复 |
|
返回顶楼 | |