Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。我们不仅可以免费下载使用,也可以对其提供的源代码进行修改,使其更符合我们的搜索要求。coreseek官网:www.coreseek.cn/。
二、不足之处:
coreseek有一点不足之处就是它不支持拼音索引。在现实项目中,特别是人名、地名,需要用到全拼或者简拼检索,比如我想搜:*,若能输入zhrmghg,或者输入zhonghuarenmingongheguo,或者只需要输入这两个字符的前缀,就能获得该结果。
三、改进思路:
指定需要拼音索引的字段,在建立索引时首先将数据转化成拼音(全拼和简拼),然后将拼音加入索引字段中对其进行索引。
四、难点:
源码的编译(http://blog.csdn.net/kangrydotnet/article/details/9971175)、多编码的汉字转化成拼音(http://blog.csdn.net/kangrydotnet/article/details/10819815)
五、使用方法:
经过近两个月的分析与修改,终于功夫不负有心人,coreseek的拼音检索终于基本上实现了。
1、在配置文件中的源块中,指定要拼音检索的字段。若要对title进行拼音检索,则:
sql_pinyin_jianpin = title //对title进行简拼索引
sql_pinyin_quanpin = title //对title进行全拼索引
sql_pinyin = title //对title既进行简拼索引,也进行全拼索引
注意,拼音索引不能与其他属性重复,即若指定了sql_attr_string = title,则不可指定sql_pinyin=title。这是原来coreseek就必须遵守的规则。指定的拼音索引字段,同时也会索引原来的字段。
2、在索引块中指定min_prefix_len的长度。该长度必须大于等于1。因为拼音索引目前就是一个前缀索引。
3、在索引块中还可以指定要多音字支持的字段。pinyin_poly_fields=title,name,...
六、目前程序的不足:
1、在控制台上,search搜索不能转码,不知道是什么原因。
2、拼音索引可能需要中缀索引。目前尚不支持。
3、目前只是测试了MySQL数据源的,其他数据源未进行测试(若其他数据源有是否可用的消息,请留言告知)。
4、目前只编译了windows版本,linux版本正在尝试编译。
5、拼音可能会有误。这里用到了网上的拼音转换程序,转换表可能会有问题。若发现哪些字不对,欢迎留言告知。
6、目前还未进行大数据量的测试,可能会有隐藏bug。
7、gb2312编码的多音字暂不支持,正在努力寻找多音字转换表。
七、下载:
win32(1版,2013-09-01):http://download.csdn.net/detail/wangshaner1/6192947
win64(2版,2013-09-03,支持utf8字节多音字问题,解决了一个内存泄露bug):http://download.csdn.net/detail/wangshaner1/6202993
win64(3版,2013-09-19,较第二版的改进有:改正拼音转换过程中的一个bug,解决了不能建立停止词的bug,将转换后的拼音从属性中删除了,以减少索引空间,解决了一个拼音内存泄露问题):http://download.csdn.net/detail/wangshaner1/6289901。性能测试结果:http://blog.csdn.net/kangrydotnet/article/details/11828441