Lucene是用于全文检索的开源库,Apache软件基金会提供支持。它由Java语言开发,也提供Python接口调用。
本文介绍使用开源项目Lupyne构建垂直搜索引擎,搜索本地网页中的内容。它使用Python语言编写,搜索功能用Lucene引擎实现,使用html2text从本地网页中提取数据,实现对网页中文本的搜索,前端调用CherryPy框架(flask的web server常用作开发测试。而cherrypy的web server常用于生产环境),提供网页搜索功能。
运行文中实例需要匹配Java,Python,Lucene等各个软件版本,环境配置比较复杂,因而基于Lucene提供的docker image环境构建。
Lucene元素
使用Lucene之前,先来了解一些相关概念。
Directory:指定如何保存构建的索引,测试时常保存在内存中,实际应用中,一般将其保存在文件系统中,本例将索引保存在/tmp/a目录下。
Analyzer:分析器,用于处理文本,如分词,去停用词等。
IndexWriter:对索引进行增删查改的工具,一般的操作都围绕IndexWriter展开。
Document:构造搜索的基本单位,一般是网页、文档、邮件等。
Field:一个Document可能包含多个域Field,比如标题、正文、作者等。
实例
下面介绍垂直搜索引擎的具体构建方法。
下载Lupyne源码
$ git clone [https://github.com/coady/lupyne](ht