1、分词词典文件地址:F:\coreseek-4.1-win32\etc\unigram.txt
2、python需要安装2.6及以下版本,上下不兼容,作用oracle万能数据源接口;安装完成后,将python.exe纳入path;安装cx_Oracle,在python命令行下面import cx_Oracle不报错证明安装完成
3、所有python的配置文件都大体相同,需要定义的如下图,定义python源文件路径,源文件的入口地址,索引数据存放地址以及数据存放格式等
4、python源文件代码:主要是数据连接部分和中文索引时相应编码的问题;在32位win7下测试通过,但不保证所有系统下测试能通过;
# -*- coding:utf-8 -*-
# python source演示操作oracle数据库from os import path
import os
import sys
import cx_Oracle
import datetimeclass MainSource(object):
def __init__(self, conf):
self.conf = conf
self.idx = 0
self.data = []
self.conn = None
self.cur = Nonedef GetScheme(self): #获取结构,docid、文本、整数
return [
(‘id’ , {‘docid’:True, } ),
(‘name’, { ‘type’:’text’} ),
(‘yqsize’, { ‘type’:’text’} ),
(‘add_date’, {‘type’:’integer’} ),
]def GetFieldOrder(self): #字段的优先顺序
return [(‘name’, ‘yqsize’)]def Connected(self): #如果是数据库,则在此处做数据库连接
if self.conn==None:
self.conn = cx_Oracle.connect(‘sppt/a123456@10.10.28.104/sgsttest’)
self.cur = self.conn.cursor()
sql = ‘SELECT id,name,yqsize,add_date FROM yqxx’
self.cur.execute(sql)
self.data = [ row for row in self.cur]
passdef NextDocument(self, err): #取得每一个文档记录的调用
if self.idx < len(self.data):
item = self.data[self.idx]
self.id = self.threadid = item[0] #’docid’:True
self.name = item[1].decode(“GBK”).encode(“UTF-8”)
self.yqsize = item[2].decode(“GBK”).encode(“UTF-8”)
self.add_date = item[3]
self.idx += 1
return True
else:
return Falseif __name__ == “__main__”: #直接访问演示部分
conf = {}
source = MainSource(conf)
source.Connected()while source.NextDocument({}):
print “id=%d, subject=%s” % (source.id, source.name.decode(“UTF-8”))
pass
#eof
5、运行test_python_oracle.cmd,可以查看索引的过程,最后启动searchd,监听9132端口,在服务器稳定的时候,可将其作为服务,开机自动启动
6、关于python中文编码问题:主要分为:控制台编码、文件编码、文件中文编码;解码方式主要有encode decode;如,从数据库读取到utf8文件编码转换时,显示数据中的编码是中文编码,于是先解编码GBK,然后再encode utf8;如上图红字;
7、不同的控制台,运行同一个python文件,可能会得到不同的结果,跟控制台编码有关。如:用PowerCmd运行与用cmd运行得到不同结果
还未解决的问题:
- 得到的结果是以数组的方式返回的,但没有详细解释翻页怎么来实现,所以要想知道,还需要看其api
- 还未查看怎么样进行增量索引的问题,能否在不停止任务的时候定时增量索引