技术笔记外传——用whoosh搭建自己的搜索框架(一)

本文介绍了如何使用whoosh构建一个通用的搜索框架blogsearchengine,它支持任意Django模型的索引,允许用户指定索引目录,并提供搜索方法。文章详细讲解了whoosh的特性以及searchengine的设计与实现,包括建立索引、更新索引和搜索方法的实现。
摘要由CSDN通过智能技术生成

在之前的博文中,我对haystack进行了诸多方面的吐槽,因此就产生了摆脱haystack的想法,而是利用whoosh搜索库自己实现搜索功能。为了提升搜索功能的通用性,我将其也设计成一个即插即用的app,算是自己实现了一个简单的搜索框架——blogsearchengine。

由于这个搜索框架目前的服务对象是基于我们的个人博客,因此将其命名为blogsearchengine。然而,作为一个具备通用性的搜索框架,显然它不仅能搜索我们的博客,还可以根据用户的设定来搜索其他django的模型数据,并且根据用户指定条件来对搜索范围进行更新和过滤。此外,blogsearchengine还提供了两种默认的搜索表单,可让用户根据自己的喜好来设定搜索条件。另外,虽然我之前吐槽过haystack的View类的设计,然而blogsearchengine也提供了默认的View类用于显示搜索结果。

blogsearchengine目前包括三大部分:1、搜索引擎searchengine;2、两种搜索表单;3、一个搜索结果View类。searchengine类显然是这个框架的核心部分,它包含了建立索引、更新索引以及提供搜索结果几个核心的功能;搜索表单包括一个基础表单和一个带单选框的表单,前者可以让用户使用简单搜索功能,而后者可以让用户在选定的范围内进行搜索;而View类免去了用户再去设计后端视图的工作,只需传入自己的模板文件名即可得到现成的搜索结果。

这是采用了blogsearchengine框架后的搜索页面和搜索结果:

搜索表单使用的是带单选框的表单,可以根据用户选择在指定范围中搜索。

这里是搜索结果,关键字已被加粗高亮。

在这期博客中,首先为大家介绍blogsearchengine的核心部分——搜索引擎searchengine。

一 whoosh搜索库

在介绍搜索引擎之前,有必要介绍一下whoosh的概念。whoosh是python实现的一套索引库。它提供了相当多的函数和类用于让用户对自己的文档建立索引,并通过给定的条件来对这些建立了索引的文档进行搜索。与solr和elasticsearch相比,whoosh本身就是基于python开发的,而solr和elasticsearch则是用java实现,使用whoosh可以免去一些环境配置工作。

whoosh具备以下特点:1、速度快,使用纯python解析,不需要编译器;2、whoosh使用BM25F作为排序算法,更方便自定义;3、whoosh建立的索引相比其他索引库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值