首先要引入API:
通过路径/usr/local/coreseek-4.1-beta/csft-4.1/api 找到sphinxapi.py复制sphinxapi.py到工程中去,在使用时,需要在文件头部这样引入即可:
from sphinxapi import *
import sys, time
前端的HTML,是一个很简单的form表单
<pre name="code" class="html"><div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4">
<form id="form3" action="../search3/" method="post">
<div class="input-group">
<input type="text" id="content" name="content" class="form-control" placeholder="id/name/text" aria-describedby="basic-addon2">
<span class="input-group-btn">
<button class="btn btn-default" type="button" οnclick="submit3()">搜索</button>
</span>
</div>
</form>
</div>
</div>
JS文件,用户判断输入是否为空,然后提交form表单,通过form 中的action 来设置表单由哪段后台代码或文件处理,此处是search3这个函数
function submit3(){
if(!$("#content").val()){
alert("表单不能为空");
} else {
$("#form3").submit();
}
}
search3 函数
(别忘了在这个函数的文件头,添加 from sphinxapi import * 和 import sys, time两句代码)
我用的是django,绿色代码是比较核心、通用的部分
def search3(request):
<span style="color:#FFCC00;"> <span style="color:#33CC00;">q = request.REQUEST.get("content")
mode = SPH_MATCH_ALL
host = 'localhost'
port = 9312
index = 'mysql'
filtercol = ''
filtervals = []
sortby = ''
groupby = ''
groupsort = ''
limit = 0
# do query
cl = SphinxClient()
cl.SetServer ( host, port )
cl.SetWeights ( [100, 1] )
cl.SetMatchMode ( mode )
if filtervals:
cl.SetFilter ( filtercol, filtervals )
if groupby:
cl.SetGroupBy ( groupby, SPH_GROUPBY_ATTR, groupsort )
if sortby:
cl.SetSortMode ( SPH_SORT_EXTENDED, sortby )
if limit:
cl.SetLimits ( 0, limit, max(limit,1000) )
res = cl.Query ( q, index )
print "res:",res</span></span>
if res['total'] is 0:
print 'query failed: %s' % cl.GetLastError()
return HttpResponse('木有查到')
else:
result = []
s0 = ''#s1和s0的命名很傻很天真
s1 = '('
length = len(res['matches'])
for i in range(0,length):
result.append(res['matches'][i]['id'])
s0 = str(result[i])
s1 = s1 + s0 + ',' #先用“+”号,以后换成join等更好的方法
s1 = s1[0:-1] + ')'
'''
以下是通过id到mysql test tb_test中查询数据
'''
import MySQLdb
import json
conn = MySQLdb.connect(host='localhost',
user='root',
passwd='admin',
db='test',
charset='utf8'
)
cur = conn.cursor()
sql = 'SELECT * FROM test.tb_test WHERE id IN %s' % s1
cur.execute(sql)
result = []
args = {}
i = 0
for row in cur.fetchall():
list = {}
list["id"] = row[0]
list["name"] = row[1]
list["text"] = row[2]
result.append(list)
cur.close()
conn.close()
args["test_list"] = json.dumps(result)
instance, type, name = get_instance_and_type(request.user)
if instance.photo :
photourl = instance.photo.url
args['photourl'] = photourl
args["name"] = name
args["keyword"] = q
return render_to_response('test_list.html',args)
test_list.html如下
<div class="container theme-showcase" role="main">
<div id="result" style="display:none;">
{{ test_list }}
</div>
<input type="hidden" id="keyword" value={{ keyword }}>
<div class="row" id="test_list">
</div>
</div>