coreseek是一个基础sphinx的中文索引工具,我今天写一下关于使用python做测试的方式。
- coreseek安装,连接mysql的配置此处不赘述,很多人写过这方面的博客,单纯讲python连接sphinx.当然我们先启动sphinx进程,./searched
- python要连接sphinx肯定是需要第三方库的,你可以去pypi找,当然sphinx已经告诉我们了,我们去/home/lpj/soft/coreseek-3.2.14/csft-3.2.14/api (我下载的coreseek解压到了我的工作目录下的soft文件夹,根据你的情况),ls一下我们看到这些文件,你是否可以找到sphinxapi.py,test.py这是操作sphinx的api和测试脚本,当然还有php,java了。
- 了解了这些,我们首先在当前api目录下把sphinxapi拷贝到python使python可以使用这个模块
cp sphinxapi.py -a /usr/local/lib/python2.7/dist-packages/,在idle中测试一下把from sphinxapi import *。没有报错引入成功。有了第三方模块,我们就要看看怎么使用了
- sphinx提供了测试脚本,我们试试,python test.py python 。最后一个python是我要查找的关键字,显示能够查处数据
- 我们看看为什么test.py能测试sphinx了, vim test.py就知道了,开头from sphinxapi import *。前面不用看了,看到cl = SphinxClient()这一句开始下是我们需要了解的,我就把test.py中的变量直接写到函数中,好看一些
cl = SphinxClient()
cl.SetServer ( ‘localhost‘, 9312 ) #主机与端口
cl.SetWeights ( [100, 1] )
cl.SetMatchMode (SPH_MATCH_ANY) #查询的匹配模式,这个自己去了解吧,一般用any
res = cl.Query ( ‘python‘, ‘*‘ ) #前一个是关键字,后一个是索引,*代表所有索引
打印print res,现在能看到结果了吗
{‘status‘: 0, ‘matches‘: [{‘id‘: 2, ‘weight‘: 2, ‘attrs‘: {}}, {‘id‘: 4, ‘weight‘: 2, ‘attrs‘: {}}], ‘fields‘: [‘title‘, ‘content‘], ‘time‘: ‘0.025‘, ‘total_found‘: 2, ‘warning‘: ‘‘, ‘attrs‘: [], ‘words‘: [{‘docs‘: 2, ‘hits‘: 4, ‘word‘: ‘python‘}], ‘error‘: ‘‘, ‘total‘: 2}
貌似很复杂的数据结构 ,仔细看一下,一个字典,包括status,matches,total_found等等,我们连接sphinx目的是什么?当然找出id再去查找mysql,所以res[‘matches‘]又是一个列表包含了2个字典,遍历一下
for i in res[‘matches‘]:
print i[‘id‘]
打印出了id,我们取出了id
使用python测试sphinx(coreseek)做全文索引