首页 > 代码库 > 使用python测试sphinx(coreseek)做全文索引

使用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” 博客,请务必保留此出处http://6167018.blog.51cto.com/6157018/1435150