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