Sphinx的一个应用实例
我把我blog的数据(中英文混合)导出, 作为数据来源, 来说明sphinx的使用.
- source blog
- {
- type = mysql
- sql_host = localhost
- sql_user = root
- sql_pass = xxxx
- sql_db = test
- sql_port = 3306
- sql_query = /
- SELECT ID, post_author, UNIX_TIMESTAMP(post_date) as date_added, post_content from wp_posts
- sql_attr_uint = post_author
- sql_attr_timestamp = date_added
- sql_query_info = SELECT * FROM wp_posts where ID=$id
- }
配置index:
- index blog
- {
- source = blog
- path = /usr/local/sphinx/var/data/blog
- docinfo = extern
- charset_type = zh_cn.utf-8
- charset_dictpath = /usr/local/sphinx/dict
- }
注意: 字典的目录要加上.
- #!/usr/bin/python
- # -*- coding:utf-8 -*-
- import sys
- if sys.getdefaultencoding() != 'utf-8':
- reload(sys)
- sys.setdefaultencoding('utf-8')
- import web
- from web.contrib.template import render_mako
- import MySQLdb
- from MySQLdb import *
- from sphinxapi import *
- urls = (
- '/', 'index',
- )
- render = render_mako(
- directories=['templates'],
- input_encoding='utf-8',
- output_encoding='utf-8',
- )
- app = web.application(urls, globals())
- con = MySQLdb.Connect(host="localhost", port=3306, user="root", passwd="xixihaha", db="blogdata")
- class index:
- def GET(self):
- r_info = ''
- info = ''
- s_result = ''
- return render.index(r_info=r_info, e_info=info, s_result=s_result)
- def POST(self):
- i = web.input()
- if i.keyword == '':
- raise web.seeohter('/')
- e_info = ''
- r_info = ''
- s_result = ''
- q = i.keyword
- cl = SphinxClient()
- cl.SetServer ( 'localhost', 3312 )
- res = cl.Query ( q, 'blog' )
- if not res:
- e_info = 'query failed: %s' % cl.GetLastError()
- if cl.GetLastWarning():
- e_info = 'WARNING: %s/n' % cl.GetLastWarning()
- if res.has_key('words'):
- for info in res['words']:
- r_info += '/t/'%s/' found %d times in %d documents<br/>' % (info['word'], info['hits'], info['docs'])
- if res.has_key('matches'):
- n = 1
- s_result = '/nMatches:<br/>'
- import time
- print res['matches']
- for match in res['matches']:
- attrsdump = ''
- for attr in res['attrs']:
- attrname = attr[0]
- attrtype = attr[1]
- value = match['attrs'][attrname]
- if attrtype==SPH_ATTR_TIMESTAMP:
- value = time.strftime ( '%Y-%m-%d %H:%M:%S', time.localtime(value) )
- attrsdump = '%s, %s=%s' % ( attrsdump, attrname, value )
- s_result += '%d. doc_id=%s, weight=%d%s<br/>' % (n, match['id'], match['weight'], attrsdump)
- n += 1
- Cursor = con.cursor()
- Cursor.execute('select post_content from wp_posts where id = %s' % match['id'])
- re = Cursor.fetchall()
- s_result += re[0][0]
- s_result += '<hr/>'
- return render.index(r_info=r_info, e_info=info, s_result=s_result)
- if __name__ == '__main__':
- app.run()
Sphinx的一个应用实例相关推荐
- JUnit基础及第一个单元测试实例(JUnit3.8)
JUnit基础及第一个单元测试实例(JUnit3.8) 单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有 ...
- 每天一个JavaScript实例-apply和call的使用方法
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 每天一个JavaScript实例-获取元素当前高度
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 创建第一个vue实例
一.vue安装与下载 1. 官网下载 下载地址 选择开发版本 2. 打开sublime,新建vue文件夹,将下载好的代码vue.js放入vue文件夹中. 3. 新建index.html文件,在hea ...
- python字典通讯录_Python利用字典将两个通讯录文本合并为一个文本实例
本文实例主要实现的是利用字典将两个通讯录文本合并为一个文本,具体代码如下: def main(): ftele1=open("d:\TeleAddressBook.txt",&qu ...
- python打开一个不存在的文件时-python判断文件是否存在,不存在就创建一个的实例...
python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...
- 将oracle冷备份恢复到另外一个数据库实例中
因更换服务器需要将Oracle数据库转移到另外台Oracle中. 说明: 1.测试环境为:windows server2003 和 oracle 10g. 2.2台服务器安装的程序目录一样,数据目录不 ...
- C# WinForm只允许运行一个窗体实例
大概看了看别人的方法,都是从语法的角度巧妙实现的. 我要实现的目的是dialogForm.Show(); 点击按钮显示对话框窗体,如果窗体没有关闭,再次点击,不重复显示. 我用了个笨方法,就是用一个静 ...
- python判断文件是否存在、不存在则创建_python判断文件是否存在,不存在就创建一个的实例...
python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...
最新文章
- 系统架构_Linux内核系统架构介绍
- denied 虚拟机access_Windows 2008 R2 Administrator access denied解决办法
- Windows10,Maven配置 电脑重启失效
- 四十、ETL工具的输入步骤
- 4K屏幕+5500万像素摄像头,以成未来手机的一大趋势
- org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed
- 【To Do】LeetCode 28. Implement strStr() 和KMP算法
- OpenCV图像 OSG模型 vs2015 摄像头 图像 插入模型
- ASP.NET MVC Flash 在线拍照
- msdia140.dll 已加载,但对DllRegisterServer 的调用失败, 错误代码: 0x80070005
- 解决Oracle安装过程中出现的缺少KEY_XE.reg文件的问题
- ps显示暂存盘已满的解决办法
- 源码解析zxing条码边距及总宽度计算规则,附java使用zxing生成条形码,并去除条码两边空白
- python大游戏_Python开发【项目】:大型模拟战争游戏(外星人入侵)
- 做外贸用哪个企业邮箱比较好?大容量外贸企业邮箱哪家好?
- ConcurrentHashMap源码深度解析(一)(java8)——不可不知的基本概念(助你拿下源码事半功倍)
- Eclipse插件开发GEF
- 「干货」项目经理工作流程23步,步步惊心
- 音乐播放器下载音乐需要收费
- LVS三种工作模式(NAT、DR、TUN)原理及配置
热门文章
- 控制字符输出java_令人伤透脑筋的java 输出控制符到底怎么用!
- 通过硬件ID精确寻找驱动--摄像头ID篇
- 手机开机启动慢是什么原因_手机开机慢,教您手机开机慢怎么办
- 保时捷遇最强对手?玛莎拉蒂发布全新SUV;比亚迪壳牌计划合资在深圳运营一万个电动汽车充电终端 | 美通社头条...
- php curl post上传图片,PHP中使用CURL发送get/post请求上传图片批处理功能
- 苹果修改wifi密码登陆服务器密码,修改wifi密码后,手机还要设置吗?
- Rational Test RealTime 测试操作小结
- 通行证漫谈(不断补充)
- Nexus安卓木马分析报告
- cas入门之一 cas 简介