python 全文检索_Python whoosh 全文检索
使用whoosh 针对自己的博客完成全文搜索功能
安装whoosh 和jieba(用于中文分词处理)
在这里搜索需要的安装包,复制安装命令即可
先将博客数据保存为 json格式,注意需要使用headers
from bs4 import BeautifulSoup
import requests
import time
import json
with open('blogs_20180729.html', encoding='utf8', mode='r') as f:
soup = BeautifulSoup(f.read(), 'html.parser')
blog_urls = [{'url': i['href'], 'title': i.text} for i in soup.select('.blog h2 a[name]')]
headers = {
'Host': 'my.oschina.net',
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Mobile Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.8',
}
print(len(blog_urls))
blogs = []
for blog in blog_urls:
# print(blog)
title = blog["title"]
html = requests.get(blog['url'], headers=headers).text
url = blog['url']
try:
blogs.append(
{
'url': url,
'title': title,
'html': html,
}
)
except Exception as e:
print(blogs, e)
time.sleep(0.2)
with open('blogs.json', mode='w+', encoding='utf8') as f:
json.dump(blogs, f)
创建索引
from whoosh.index import create_in
from whoosh.fields import *
from jieba.analyse import ChineseAnalyzer
import json
# 导入中文分词工具
analyser = ChineseAnalyzer()
# 可以设置不同类型的索引
# schema = Schema(phone_name=TEXT(stored=True, analyzer=analyser),
# price=NUMERIC(stored=True),
# phoneid=ID(stored=True)) # 创建索引结构
schema = Schema(
title=TEXT(stored=True, analyzer=analyser),
html=TEXT(stored=True),
url=TEXT(stored=True)
)
# path 为索引创建的地址,blog_index 为索引名称
ix = create_in("path", schema=schema, indexname='blog_index')
writer = ix.writer()
# 写入数据
with open('blogs.json', mode='r') as f:
blogs = json.load(f)
for blog in blogs:
writer.add_document(
title=blog['title'],
html=blog['html'],
url=blog['url']
)
writer.commit()
print("建立完成一个索引")
执行查询
查询条件为,只要关键字在题目和html中出现就匹配
from whoosh.index import open_dir
from whoosh.query import *
index = open_dir("path", indexname='blog_index') # 读取建立好的索引
def find(words):
with index.searcher() as searcher:
myquery = And([
Or([Term("html", w), Term("title", w)])
for w in words
]
)
results = searcher.search(myquery, limit=None)
for res in results:
print(res['title'], res['url'])
s = 'vue webpack'
words = [w.strip() for w in s.split()]
find(words)
结果
高亮检索到的单词
for res in results:
print(res.highlights('title'))
转载至链接:https://my.oschina.net/ahaoboy/blog/1919654
python 全文检索_Python whoosh 全文检索相关推荐
- python全文检索框架_全文检索框架haystack和搜索引擎whoosh的使用
认识全文检索和搜索引擎以及相应的安装配置 1.认识全文检索和搜索引擎 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理. haystack:全文检索的框架,支持w ...
- python 床前明月光_Python之利用Whoosh搭建轻量级搜索
本文将简单介绍Python中的一个轻量级搜索工具Whoosh,并给出相应的使用示例代码. Whoosh简介 Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软件包的在 ...
- whoosh全文检索
whoosh全文检索 纯Python编写的全文搜索引擎,对于小型的站点,whoosh已经足够使 用 Whoosh速度很快,使用纯Python,因此它将在Python运行的任何地方 运行,而无需编译器 ...
- Python之利用Whoosh搭建轻量级搜索
本文将简单介绍Python中的一个轻量级搜索工具Whoosh,并给出相应的使用示例代码. Whoosh简介 Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软 ...
- PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))...
PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a) robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...
- python画代码-Python教程_Python画Mandelbrot集 代码
Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...
- c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...
用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...
- python编程语言_python编程语言的简要历史
python编程语言 The Python programming language is a general-purpose programming language that has carved ...
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
最新文章
- tf.placeholder函数说明
- [code] spectral cluster
- bl 和 ldr跳转程序的区别
- 2.3线性表的链式存储和运算—双向链表
- 计算机网络——标准化工作及相关组织
- KubeFlow安装指南
- [PeterDLax著泛函分析习题参考解答]第4章 Hahn-Bananch 定理的应用
- 360浏览器的html在哪里,360浏览器收藏夹路径在哪里
- popwindow的显示层面
- 《出版专业实务·初级(2020版)》学习笔记
- origin 2018安装教程与安装包
- Kaggle—共享单车数据分析
- 【WinHex篇】WinHex跳过坏扇区制作磁盘镜像
- windows 11 锁屏壁纸路径
- 团组织关系的转接流程
- 程控交换机与集团电话的区别是什么
- CSS——低调的奢华
- 因式分解结合最近邻:多层面的协同过滤模型
- Some VMware images
- 抖音怎么注销账号?操作流程步骤有哪些?
热门文章
- D3.js中Bullet Charts详解
- 【问题】win10开机慢 底部任务栏出来慢
- win10 0x80070035错误 无法访问同网络共享文件
- Python爬虫 教程:IP池的使用
- oracle的url配置说明,Oracle数据库url连接最后一个orcl代表的是配置的数据库SID
- Jetpack Compose - TextField
- jQuery 实现input搜索框自动匹配------Sestid
- iOS-发布APP到AppStore
- 塑造一个没有明确风格的战士!3DMax打造海岛型金甲神人!你学会了吗?
- vSphere虚拟化之网络配置