haystack 是 django 的开源搜索框架,该框架支持 Solr、Elasticsearch、Whoosh、Xapian 搜索引擎,不用更改代码,直接切换引擎。
搜索引擎使用 Whoosh,这是一个由纯 python 实现的全文搜索引擎,没有二进制文件等,比较小巧,配置比较简单。
配置 haystack
在主项目路径下的 settings.py 文件的INSTALLED_APPS中添加
haystack 配置信息
同样,在 settings.py 文件中配置。
需要设置 PATH 到 项目的 Whoosh 所有的文件系统的位置。
使用python manage.py rebuild_index或者使用update_index命令。在 settings.py 里加入以下配置,实现自动刷新索引。
建立索引
在需要搜索功能的 App 应用下建立search_indexes.py文件,用于创建索引。
以本次电商项目为例,在商品应用下建立了 search_indexes.py 文件。
每个索引里面必须有且只有一个字段为document=True,这代表 haystack 和搜索引擎将使用此字段的内容作为索引进行检索。其它字段只是附属的属性,方便调用,并不做为检索数据。
商品的模型层如图所示:
注意:如果使用一个字段设置了 document=True,则一般约定此字段名为 text,这是在 SearchIndex 类里面一贯的命名,以防止后台混乱。
数据模板
haystack 提供了use_template=True在text字段,这样就允许使用数据模板去建立搜索引擎索引的文件。
文件名必须为要索引的类名_text.txt
字段建立索引,当检索的时候会对字段做全文检索匹配
配置 URL
搜索模板
领取专属 10元无门槛券
私享最新 技术干货