Coreseek配置选项

12.1. 中文分词核心配置

关于中文分词的详细配置实例和分词词典的自定义设置,可以访问Coreseek网站中文分词核心配置查看。

核心配置:	charset_dictpath		= /usr/local/mmseg3/etc/	charset_type		         = zh_cn.utf-8
	#charset_table                 = .................... #需将原有的该配置注释掉	ngram_len                        = 0

12.1.1. charset_dictpath

设置中文分词词典所在的目录;

示例:

#Linux
charset_dictpath		= /usr/local/mmseg3/etc/
#Windows
charset_dictpath		= C:\usr\local\coreseek\etc

12.1.2. charset_type

设置文档的字符集,可选的值为“zh_cn.utf-8”、“zh_cn.gbk”和“zh_cn.big5”。“zh_cn.gbk”和“zh_cn.big5”需要iconv支持。

示例:

charset_type		=  zh_cn.utf-8

12.2. MMSEG分词配置选项

mmseg分词相关的配置选项,需要保存到文件mmseg.ini,并将该配置文件放置到charset_dictpath所设置的目录中。

基本配置:
[mmseg] 
merge_number_and_ascii=0; 	;合并英文和数字 abc123/xnumber_and_ascii_joint=-; 	;定义可以连接英文和数字的字符compress_space=1; 		;暂不支持seperate_number_ascii=0;	;就是将字母和数字打散
其中,分号表示注释

12.2.1. merge_number_and_ascii

是否合并英文和数字,该选项设置是否将连接在一起的英文字母和数字作为一个整体看待

例如:

merge_number_and_ascii=0; ;abc123将被切分为abc、123
merge_number_and_ascii=1; ;abc123将不被切分

12.2.2. number_and_ascii_joint

定义可以连接英文和数字的字符

例如:

number_and_ascii_joint=-_; ;abc_123、abc-123都将作为整体

12.2.3. compress_space

预设配置,暂不支持

12.2.4. seperate_number_ascii

是否将字母和数字打散

例如:

seperate_number_ascii=0; ;abc作为整体
seperate_number_ascii=1; ;abc被切分为a、b、c

12.3. Python数据源程序接口

Python数据源的各种实例程序,可以访问Coreseek网站Python数据源获取。该部分的相关文档,还在继续完善中。

#Python数据源基本演示程序
#/usr/local/coreseek/etc/pysource/csft_demo/__init__.py
# -*- coding:utf-8 -*-

class MainSource(object):
    def __init__(self, conf):
        self.conf =  conf
        self.data = [
            {'id':1, 'subject':u"标题1", 'date':1270131607},
            {'id':2, 'subject':u'标题2', 'date':1270135548},
        ]
        self.idx = 0
        
    def GetScheme(self):
        return [
            ('id' , {'docid':True, } ),
            ('subject', { 'type':'text'} ),
            ('date', {'type':'integer'} ),
        ]
       
    def GetKillList(self):
        return [3,1]
    
    def GetFieldOrder(self):
        return ('subject')
        
    def Connected(self):
        pass

    def OnBeforeIndex(self):
        print 'before index called'
        pass

    def NextDocument(self, err):
        if self.idx < len(self.data):
            item = self.data[self.idx]
            self.id = item['id']
            self.subject = item['subject'].encode('utf-8')
            self.date = item['date']
            self.idx += 1
            return True
        else:
            return False
		pass

    def OnAfterIndex(self):
        print 'after index called'
		pass

    def OnIndexFinished(self):
        print 'after index finished'
        pass

if __name__ == "__main__":
    source = MainSource()
    source.Connected()

    source.OnBeforeIndex()
    while source.NextDocument():
        print "id=%d, title=%s" % (source.docid, source.title)

    source.OnAfterIndex()
    source.OnIndexFinished()
    pass
#eof

12.3.1. GetScheme() (设置检索字段的属性)

返回所有需要被索引的字段的属性

例如:

    def GetScheme(self):
        return [
            ('id' , {'docid':True, } ),
            ('subject', { 'type':'text'} ),
            ('date', {'type':'integer'} ),
        ]		
		

在检索字段设置中,必须且仅有一个字段需要设置为docid,对应于SQL数据源中的文档编号。其他字段的属性,可以为integer,对应于sql_attr_uint,或者text,对应于全文检索字段。目前支持的类型如下:

12.3.2. GetKillList() (设置不参与检索的文档编号)

处于该列表之中的文档,将不被检索,对应于SQL数据源的sql_query_killlist

例如:

    def GetKillList(self):
        return [3,1]		
		

12.3.3. GetFieldOrder() (设置字段的顺序)

全文字段被检索的顺序

例如:

    def GetFieldOrder(self):
        return [('subject','content')]		

12.3.4. Connected() (获取数据前的连接处理)

一般用于进行数据库的连接等预处理

例如:

    def Connected(self):
        #在此进行数据库连接和处理
        pass		
		

12.3.5. OnBeforeIndex() (数据获取前处理)

类似sql_query_pre配置选项的作用

例如:

    def OnBeforeIndex(self):
        print 'before index called'
        pass		
		

12.3.6. NextDocument() (文档获取处理)

获取实际的需要参与检索的数据,按条获取,需要获取的字段,作为self自身的属性给出,相当于sql_query的作用,每次读取一条数据

例如:

    def NextDocument(self, err):
        if self.idx < len(self.data):
            item = self.data[self.idx]
            self.id = item['id']
            self.subject = item['subject'].encode('utf-8')
            self.date = item['date']
            self.idx += 1
            return True
        else:
            return False		
		pass		

12.3.7. OnAfterIndex() (数据获取后处理)

类似sql_query_post配置选项的作用

例如:

    def OnAfterIndex(self):
        print 'after index called'
		pass		

12.3.8. OnIndexFinished() (索引完成时处理)

类似sql_query_post_index配置选项的作用

例如:

    def OnIndexFinished(self):
        print 'after index finished'
        pass