python 全文检索引擎详解

最近一直在探索着如何用Python实现像百度那样的关键词检索功能。说起关键词检索,我们会不由自主地联想到正则表达式。正则表达式是所有检索的基础,python中有个re类,是专门用于正则匹配。然而,光光是正则表达式是不能很好实现检索功能的。
python有一个whoosh包,是专门用于全文搜索引擎。
whoosh在国内使用的比较少,而它的性能还没有sphinx/coreseek成熟,不过不同于前者,这是一个纯python库,对python的爱好者更为方便使用。具体的代码如下
安装
输入命令行 pip install whoosh
需要导入的包有:
fromwhoosh.index import create_in fromwhoosh.fields import * fromwhoosh.analysis import RegexAnalyzer fromwhoosh.analysis import Tokenizer,Token
中文分词解析器
class ChineseTokenizer(Tokenizer):
"""
中文分词解析器
"""
def __call__(self, value, positions=False, chars=False,
keeporiginal=True, removestops=True, start_pos=0, start_char=0,
mode='', **kwargs):
assert isinstance(value, text_type), "%r is not unicode "% value
t = Token(positions, chars, removestops=removestops, mode=mode, **kwargs)
list_seg = jieba.cut_for_search(value)
for w in list_seg:
t.original = t.text = w
t.boost = 0.5
if positions:
t.pos = start_pos + value.find(w)
if chars:
t.startchar = start_char + value.find(w)
t.endchar = start_char + value.find(w) + len(w)
yield t
def chinese_analyzer():
return ChineseTokenizer()
构建索引的函数
@staticmethod
def create_index(document_dir):
analyzer = chinese_analyzer()
schema = Schema(titel=TEXT(stored=True, analyzer=analyzer), path=ID(stored=True),
content=TEXT(stored=True, analyzer=analyzer))
ix = create_in("./", schema)
writer = ix.writer()
for parents, dirnames, filenames in os.walk(document_dir):
for filename in filenames:
title = filename.replace(".txt", "").decode('utf8')
print title
content = open(document_dir + '/' + filename, 'r').read().decode('utf-8')
path = u"/b"
writer.add_document(titel=title, path=path, content=content)
writer.commit()
检索函数
@staticmethod
def search(search_str):
title_list = []
print 'here'
ix = open_dir("./")
searcher = ix.searcher()
print search_str,type(search_str)
results = searcher.find("content", search_str)
for hit in results:
print hit['titel']
print hit.score
print hit.highlights("content", top=10)
title_list.append(hit['titel'])
print 'tt',title_list
return title_list
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# python
# 全文检索引擎
# 全文检索引擎详解
# 听歌识曲--用python实现一个音乐检索器的功能
# python使用xlrd实现检索excel中某列含有指定字符串记录的方法
# 使用python实现正则匹配检索远端FTP目录下的文件
# 关键词
# 正则表达式
# 还没有
# 很好
# 有个
# 是专门
# 这是一个
# 希望能
# 谢谢大家
# 命令行
# 如何用
# 比较少
# 不由自主
# 有一个
# 在国内
# py
# ChineseTokenizer
# keeporiginal
# True
# removestops
相关文章:
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
手机网站制作与建设方案,手机网站如何建设?
如何高效利用200m空间完成建站?
如何高效生成建站之星成品网站源码?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
如何快速使用云服务器搭建个人网站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
图册素材网站设计制作软件,图册的导出方式有几种?
如何快速搭建高效WAP手机网站吸引移动用户?
如何解决ASP生成WAP建站中文乱码问题?
高防服务器如何保障网站安全无虞?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何快速搭建高效WAP手机网站?
如何规划企业建站流程的关键步骤?
家具网站制作软件,家具厂怎么跑业务?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
重庆网站制作公司哪家好,重庆中考招生办官方网站?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
网站制作新手教程,新手建设一个网站需要注意些什么?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何在服务器上配置二级域名建站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何在宝塔面板中修改默认建站目录?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
小建面朝正北,A点实际方位是否存在偏差?
如何在阿里云部署织梦网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
h5在线制作网站电脑版下载,h5网页制作软件?
建站之星代理平台如何选择最佳方案?
如何用西部建站助手快速创建专业网站?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
英语简历制作免费网站推荐,如何将简历翻译成英文?
红河网站制作公司,红河事业单位身份证如何上传?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
韩国服务器如何优化跨境访问实现高效连接?
常州企业网站制作公司,全国继续教育网怎么登录?
如何高效完成独享虚拟主机建站?
建站VPS配置与SEO优化指南:关键词排名提升策略
如何确保FTP站点访问权限与数据传输安全?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何在阿里云虚拟服务器快速搭建网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
*请认真填写需求信息,我们会在24小时内与您取得联系。