Coreseek支持中文utf8全文检索

本文介绍如何通过修改Coreseek配置实现稳定高效的中文搜索功能。包括新增sql_query_info_pre指令以设置正确的字符集,以及如何调整索引配置以支持UTF-8编码的中文内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:操作在source里面

Coreseek-3.2.144.0.1更新

http://www.coreseek.cn/news/12/99/

增加sql_query_info_pre指令:

#索引数据前,设置正确的字符集

sql_query_pre            SET NAMES utf8

#查询数据库,获取需要索引的数据

sql_query                  SELECT id,title FROM documents

 

......

 

#命令行查询时,设置正确的字符集

sql_query_info_pre      SET NAMES utf8

#命令行查询时,从数据库读取原始数据信息

sql_query_info            SELECT FROM documents WHERE id=$id

 

第二步:操作在index里面

coreseek默认安装时,即csft.conf中的charset_type sbcs。进行中文搜索的时候会失败或者乱码。因为sbcs的定义是“Single Byte(单字节)Character Set 单字节字符集,这样是不符合我们的需求的,所以我们需要中文的utf-8。根据文档中的描述,charset_type 的另一个选项是utf-8,但实际上这对于中文是不行的。

 

1.首先复制mmseg源代码中的data文件夹到你的mmseg的安装目录中,可以不这么做,但是data目录必须有。

cp -R mmseg-3.1/data/  /usr/local/mmseg/  (这里可以根据你的情况设定具体的路径)

 

2.然后进入刚才的路径,生成字典文件

#cd /usr/local/mmseg/data

/usr/local/mmseg/bin/mmseg -u unigram.txt

会生成一个unigram.txt.uni文件,将这个文件改名或者复制为uni.lib在当前文件夹

cp unigram.txt.uni uni.lib

 

3.现在修改csft.conf文件

vi /usr/local/coreseek/etc/sphinx.conf

查找charset_type并修改为:
charset_type    zh_cn.utf-8
同时添加一行:
charset_dictpath  /usr/local/mmseg/data

现在向默认的mysql数据库中插入一条中文信息。注意需要utf8_general_ci编码。

 

4.重建索引

/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf test1 --rotate

 

a.--rotate参数可以在不停searchd的情况下索引,不然会提示错误

b.如果出现 cannot open /usr/local/mmseg/data/mmseg.ini 错误

 

解决办法

#vi /usr/local/coreseek/data/dict/mmseg.ini

输入以下

[mmseg]
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;

 

解释如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值