10.3.Python数据源程序接口
优质
小牛编辑
137浏览
2023-12-01
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): 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
10.3.1.GetScheme() (设置检索字段的属性)
返回所有需要被索引的字段的属性
例如:
def GetScheme(self): return [ ('id' , {'docid':True, } ), ('subject', { 'type':'text'} ), ('date', {'type':'integer'} ), ]
在检索字段设置中,必须且仅有一个字段需要设置为docid,对应于SQL数据源中的文档编号。其他字段的属性,可以为integer,对应于sql_attr_uint
,或者text,对应于全文检索字段。
10.3.2.GetKillList() (设置不参与检索的文档编号)
处于该列表之中的文档,将不被检索,对应于SQL数据源的sql_query_killlist
例如:
def GetKillList(self): return [3,1]
10.3.3.GetFieldOrder() (设置字段的顺序)
全文字段被检索的顺序
例如:
def GetFieldOrder(self): return [('subject','content')]
10.3.4.Connected() (获取数据前的连接处理)
一般用于进行数据库的连接等预处理
例如:
def Connected(self): #在此进行数据库连接和处理 pass
10.3.5.OnBeforeIndex() (数据获取前处理)
类似sql_query_pre
配置选项的作用
例如:
def OnBeforeIndex(self): print 'before index called' pass
10.3.6.NextDocument() (文档获取处理)
获取实际的需要参与检索的数据,按条获取,需要获取的字段,作为self自身的属性给出,相当于sql_query
的作用,每次读取一条数据
例如:
def NextDocument(self): 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
10.3.7.OnAfterIndex() (数据获取后处理)
类似sql_query_post
配置选项的作用
例如:
def OnAfterIndex(self): print 'after index called' pass
10.3.8.OnIndexFinished() (索引完成时处理)
类似sql_query_post_index
配置选项的作用
例如:
def OnIndexFinished(self): print 'after index finished' pass