coreseek通过python读取mongoDB数据
2014-01-03 17:44
375 查看
coreseek的资料真少啊,不人性化
官方内容一定要看,进行中...
http://www.tapy.org/sphinx1.0/sphinx.html http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html
mongoDB不是coreseek/sphinx支持的格式,因此我用python读入mongoDB数据,然后转成python数据源,用coreseek建立索引
刚刚一直无法将文件的id设置成功,一开始怀疑是
纠结啊,网上找不到资料,所以试出来之后写个blog给大家
另外,一开始试图将mongoDB的数据放在__init__方法中,失败了,还以为是必须要放在Connected这个方法内,事实证明,也是因为id从0开始报错的原因。如果不嫌丑陋,
这一段可以放在__init__方法中
继续探索,good luck to you and me
官方内容一定要看,进行中...
http://www.tapy.org/sphinx1.0/sphinx.html http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html
mongoDB不是coreseek/sphinx支持的格式,因此我用python读入mongoDB数据,然后转成python数据源,用coreseek建立索引
# -*- coding:utf-8 -*- # author: Hao import pymongo class MainSource(object): def __init__(self, conf): self.conf = conf self.idx = 0 self.data=[] self.conn = None self.cur = None def GetScheme(self): #获取结构,docid、文本、整数 return [ ('id' , {'docid':True, } ), ('subject', { 'type':'text'} ), ('context', { 'type':'text'} ), ('published', {'type':'integer'} ), ('author_id', {'type':'integer'} ), ] def GetFieldOrder(self): #选择被搜索字段,并决定字段的优先顺序 return [('subject', 'context')] def Connected(self): #如果是数据库,则在此处做数据库连接 if self.conn == None: #读入数据库数据 conn = pymongo.Connection('localhost',27017) db = conn.test dbCollection = db.database commentset=[] cursor = dbCollection.find() count=0 for commentPiece in cursor: sentence = commentPiece['content'] commentset.append(sentence) for i in range(len(commentset)): self.data.append({'id':i+1, 'subject':u'number'+str(i),'context':commentset[i], 'published':00001, 'author_id':1 }) pass def NextDocument(self,_): #取得每一个文档记录的调用 if self.idx < len(self.data): item = self.data[self.idx] self.id = item['id'] #'docid':True self.subject = item['subject'].encode('utf-8') self.context = item['context'].encode('utf-8') self.published = item['published'] self.author_id = item['author_id'] self.idx += 1 return True else: return False if __name__ == "__main__": #直接访问演示部分 conf = {} source = MainSource(conf) source.Connected() while source.NextDocument(): print "id=%d, context=%s" % (source.id, source.context) pass #eof
刚刚一直无法将文件的id设置成功,一开始怀疑是
'id' , {'docid':True, }的格式要求不对,后来发现这个好像是固定写法,根据他人的格式,这种写法,docid完全可以是1、2、3、4、5...
纠结啊,网上找不到资料,所以试出来之后写个blog给大家
self.data.append({'id':i+1, 'subject':u'number'+str(i),'context':commentset[i], 'published':00001, 'author_id':1 })出现问题的原因是因为,docid必须是非零正整数,这里 i in range()是从0开始的计数,所以,一直是报错状态
另外,一开始试图将mongoDB的数据放在__init__方法中,失败了,还以为是必须要放在Connected这个方法内,事实证明,也是因为id从0开始报错的原因。如果不嫌丑陋,
#读入数据库数据 conn = pymongo.Connection('localhost',27017) db = conn.test dbCollection = db.database commentset=[] cursor = dbCollection.find() count=0 for commentPiece in cursor: sentence = commentPiece['content'] commentset.append(sentence) for i in range(len(commentset)): self.data.append({'id':i+1, 'subject':u'number'+str(i),'context':commentset[i], 'published':00001, 'author_id':1 })
这一段可以放在__init__方法中
继续探索,good luck to you and me
相关文章推荐
- python从共享目录读取考勤数据,通过openpyxl解析excel2007,查询出自己考勤记录
- python 读取单所有json数据写入mongodb(单个)
- Python 通过thrift接口连接Hbase读取存储数据
- Mongodb学习笔记 --- python读取mongodb数据
- python读取json文件并将数据插入到mongodb的方法
- python读取json文件,并将数据插入到mongodb
- 通过Python将MongoDB导出的json数据转换成Mysql的insert语句导入
- Python3通过数据缓存区读取串口数据
- python通过串口读取GPS NMEA格式的数据,并保存为csv文件
- Python从MongoDB中按天读取数据并格式化日志
- 通过字符流读取中文数据
- Python 通过print将数据保存到文件中
- 点击按钮从数据库中读取数据,然后通过JTable显示
- 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性
- python利用mongodb上传图片数据 : GridFS 与 bson两种方式
- python hbase读取数据发送kafka
- Windows下Python读取GRIB数据
- [Python]通过网易财经接口获取股票和指数的历史数据
- 一个AJAX列子,通过读取后台数据库数据转换为xml格式进行输出
- python读取MNIST image数据