yuanyi

Thinking-sphinx支持中文检索及数据库编码的转换

Posted by yuanyi on 2010-02-04 09:40:52 UTC

要让Sphinx支持中文检索,需要在config/sphinx.yml中加入下面2行配制:

ngram_len: 1
ngram_chars: "U+4E00..U+9FBB, U+3400..U+4DB5, U+20000..U+2A6D6, U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, U+FA29, U+3105..U+312C, U+31A0..U+31B7, U+3041, U+3043, U+3045, U+3047, U+3049, U+304B, U+304D, U+304F, U+3051, U+3053, U+3055, U+3057, U+3059, U+305B, U+305D, U+305F, U+3061, U+3063, U+3066, U+3068, U+306A..U+306F, U+3072, U+3075, U+3078, U+307B, U+307E..U+3083, U+3085, U+3087, U+3089..U+308E, U+3090..U+3093, U+30A1, U+30A3, U+30A5, U+30A7, U+30A9, U+30AD, U+30AF, U+30B3, U+30B5, U+30BB, U+30BD, U+30BF, U+30C1, U+30C3, U+30C4, U+30C6, U+30CA, U+30CB, U+30CD, U+30CE, U+30DE, U+30DF, U+30E1, U+30E2, U+30E3, U+30E5, U+30E7, U+30EE, U+30F0..U+30F3, U+30F5, U+30F6, U+31F0, U+31F1, U+31F2, U+31F3, U+31F4, U+31F5, U+31F6, U+31F7, U+31F8, U+31F9, U+31FA, U+31FB, U+31FC, U+31FD, U+31FE, U+31FF, U+AC00..U+D7A3, U+1100..U+1159, U+1161..U+11A2, U+11A8..U+11F9, U+A000..U+A48C, U+A492..U+A4C6"

如果你的数据库不是UTF8编码的,则需要先将数据库转为UTF8格式,一个比较简单的方法是用Heroku的yaml_db插件。

$ script/plugin install git://github.com/adamwiggins/yaml_db.git
$ rake db:data:dump

然后删除数据库并重新创建:

$ mysql -u root 
> create database db_name default character set utf8;

然后修改config/database.yml,确保里面有下面一行:

encoding: utf8

然后重新倒入数据:

$ rake db:data:load

现在重新编制索引就可以了:

$ rake ts:in
$ rake ts:start

You must be a project member to post a new comment.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

Recent Comment Activity

People watching this message