使用python测试sphinx(coreseek)做全文索引

coreseek是一个基础sphinx的中文索引工具,我今天写一下关于使用python做测试的方式。

1.coreseek安装,连接mysql的配置此处不赘述,很多人写过这方面的博客,单纯讲python连接sphinx.当然我们先启动sphinx进程,./searched

2.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了。

3.了解了这些,我们首先在当前api目录下把sphinxapi拷贝到python使python可以使用这个模块

cp sphinxapi.py -a /usr/local/lib/python2.7/dist-packages/,在idle中测试一下把from sphinxapi import *。没有报错引入成功。有了第三方模块,我们就要看看怎么使用了

4.sphinx提供了测试脚本,我们试试,python test.py  python 。最后一个python是我要查找的关键字,显示能够查处数据

5.我们看看为什么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

    原文作者:lpj24
    原文地址: https://www.jianshu.com/p/4fed9ae2cb39
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞