功能描述
实现一个类似淘宝的搜索功能,例如下面这个例子
简单点来说我们需要先根据商品名称创建索引,然后再用索引文件匹配去查询字符串来实现商品的搜索,这种搜索是有别于正则匹配的,他会对字符串进行分词处理,准确度也会更高。
准备工作
这个项目种主要用到了jieba、whoosh两个库,其中jieba实现对中文的分词处理,whoosh则是创建索引文件。
安装依赖:
- 系统:Ubuntu 16.04
- Python版本: 3.5
pip install jieba pip install whoosh
测试数据:
从github上找到的空气净化器的csv数据,需要的可点击下载测试数据
正式开始
- 创建索引文件
首先需要利用whoosh提供的接口对csv中的数据进行处理,生成索引文件。
whoosh对中文分词处理不是很好,所以选择jieba实现对中文的分词处理,jieba这个库也有对whoosh的支持,所以处理起来很方便,直接将索引模式中的analyzer更换为jieba的ChineseAnalyzer即可。
schema
定义了索引的模式,规定了索引的字段信息,其中索引字段包含ID
、STROED
、KEYWORD
、TEXT
、NUMERIC
、BOOLEAN
、DATETIME
等几种,具体的含义和使用对象还是去看whoosh的官方文档来的直接,另外schema只需要我们创建一次,然后就会和索引一起被保存。(只需在第一次创建的时候声明schema)from whoosh.index import create_in from whoosh.fields import * from jieba.analyse.analyzer import ChineseAnalyzer import os.path import csv def create_index(): """ 创建索引文件 :return: None """ analyzer = ChineseAnalyzer() schema = Schema(id=ID(stored=True, unique=True), content=TEXT(stored=True, analyzer