whoosh:检索引擎。(单词原意:飞快的移动。 安装django-haystack, whoosh, jieba(切换到项目目录下) $ cd ~/PycharmProjects/dailyfresh $ pip install whoosh $ = { 'default': { # 使用whoosh引擎 # haystack 通过 下面路径 中的 WhooshEngine类,来使用whoosh检索引擎 生成索引文件时,自动 在目录(BASE_DIR)下 创建目录(whoosh_index) 'PATH': os.path.join(BASE_DIR, 'whoosh_index'), 中的词语分析类: # 复制whoosh_backend.py并改名为whoosh_cn_backend.py $ cp whoosh_backend.py whoosh_cn_backend.py $
haystack(全文检索框架)和whoosh(全文检索引擎)的使用 后端安装与配置 1)在虚拟环境中依次安装需要的包。 HAYSTACK_CONNECTIONS = { 'default': { #使用whoosh引擎 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine 文件,新复制的文件名自定义(如whoosh_backend_bak.py),打开该新文件。 修改setting 'default': { #使用自定义的引擎,其中**whoosh_backend_bak**为第2)步中自己复制**whoosh_backend**后的新自定义文件名 **whoosh_backend_bak**.WhooshEngine', #索引文件路径 'PATH': os.path.join(BASE_DIR, 'whoosh_index
官方文档:https://whoosh.readthedocs.io/en/stable/ pypi:https://pypi.python.org/pypi/Whoosh/#downloads 安装 pip install Whoosh Whoosh是一个纯python的全文搜索库 Whoosh官方文档介绍如下, Whoosh is a library of classes and functions 例如,如果你在写博客选择(或者说博客搜索)程序,你可以用Whoosh添加一个让用户搜索博客条目的函数 因为做的是中文的全文检索需要导入jieba工具包以及whoosh工具包 Schema 有两个field ) 如果你不需要给任何field type传值,你可以只给类名 ,whoosh会为你初始化该对象 from whoosh.fields import Schema, STORED, ID, KEYWORD whoosh.fields.BOOLEAN 这个类型存储bool型 whoosh.fields.DATETIME 这个类型为 datetime object而设计更多详细信息 whoosh.fields.NGRAM
Whoosh 简介 Whoosh 由 Matt Chaput 创建,它一开始是一个为 Houdini 3D 动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源 Whoosh 纯由 Python 编写而成,是一个灵活的,方便的,轻量级的搜索引擎工具,现在同时支持 Python2、3,其优点如下: Whoosh 纯由 Python 编写而成,但很快,只需要 Python Whoosh 的官方介绍网站为:https://whoosh.readthedocs.io/en/latest/intro.html 。 如果你有 ES 方面的经验,那么,对于 Whoosh 是十分容易上手的。 按照笔者的理解以及 Whoosh 的官方文档,Whoosh 的入门使用主要是 index 以及 query。 关于 Whoosh 的使用,在官文文档中已经给出了详细的说明,笔者在这里只给出一个简单的例子,来说明 Whoosh 如何能方便地提升我们的搜索体验。
初始化索引目录和scheme¶ In [1]: import os from whoosh.index import create_in from whoosh.fields import * from In [2]: from whoosh.filedb.filestore import FileStorage storage = FileStorage(ix_path) #idx_path 为索引路径 (indexname=ix_name) # 按照schema定义信息,增加需要建立索引的文档 # 注意:字符串格式需要为unicode格式 with ix.writer() as w: # from whoosh.writing
Whoosh简介 Whoosh由Matt Chaput创建,它一开始是一个为Houdini 3D动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源。 不需要编译器; 默认使用 Okapi BM25F排序算法,也支持其他排序算法; 相比于其他搜索引擎,Whoosh会创建更小的index文件; Whoosh中的index文件编码必须是unicode; Whoosh Whoosh的官方介绍网站为:https://whoosh.readthedocs.io/en/latest/intro.html 。 如果你有ES方面的经验,那么,对于Whoosh是十分容易上手的。 按照笔者的理解以及Whoosh的官方文档,Whoosh的入门使用主要是index以及query。 关于Whoosh的使用,在官文文档中已经给出了详细的说明,笔者在这里只给出一个简单的例子,来说明Whoosh如何能方便地提升我们的搜索体检。
开始使用 简单版本 使用whoosh作为后端索引存储(基于文件系统),该操作参考官方文档即可。 /whoosh_backend.py)拷贝到你创建的应用下面,并重命名为whoosh_cn_backend.py,例如blog/whoosh_cn_backend.py。 编辑blog/whoosh_cn_backend.py导入中文分析库ChineseAnalyzer 修改blog/whoosh_cn_backend.py大概163行位置 2、在settings.py中修改之前使用的默认的 升级版本 由于whoosh是基于文件系统的,所有在索引数据量过大时必然引起性能问题。 部分代码 urls.py: views.py: 总结: 通过对比两种方式,可以发现: whoosh使用jieba分词做处理,然后基于文件存储。
whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看 whoosh文档。 因为这里演示是使用whoosh,所以下面是关于whoosh作为后端的示例: HAYSTACK_CONNECTIONS = { 'default': { #使用whoosh引擎 我 爱 中国 In [7]: 下面来改写whoosh的后端文件。 文件,改为如下名称whoosh_cn_backend.py ?
haystack是django的开源搜索框架,该框架支持Solr、 Elasticsearch、 Whoosh、Xapian搜索引擎,其中whoosh是纯python编写的全文检索引擎,在实际操作过程中可以结合 haystack官方网站 whoosh文档 1.安装包 在Django虚拟环境中安装django-haystack和whoosh包 pip install django-haystack==2.5.0 引擎 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', # 索引文件路径 'PATH' : os.path.join(BASE_DIR, 'whoosh_index'), } } # 当添加、修改、删除数据时,自动生成索引 HAYSTACK_SIGNAL_PROCESSOR = ' 文件为whoosh_cn_backend.py cp whoosh_backend.py whoosh_cn_backend.py 打开whoosh_cn_backend.py文件,引入ChineseAnalyzer
app = Flask(name) whooshee = Whooshee(app) 属性 Option Description WHOOSHEE_DIR The path for the whoosh WHOOSHEE_MIN_STRING_LEN Min. characters for the search string (defaults to 3) WHOOSHEE_WRITER_TIMEOUT How long should whoosh to False) WHOOSHEE_ENABLE_INDEXING Specify whether or not to actually do any operations with the Whoosh ( entry_id = whoosh.fields.NUMERIC(stored=True, unique=True), user_id = whoosh.fields.NUMERIC(stored =True), username = whoosh.fields.TEXT(), title = whoosh.fields.TEXT(), content = whoosh.fields.TEXT
中文分词 Jieba,由于 Whoosh 自带的是英文分词,对中文的分词支持不是太好,故用 jieba 替换 whoosh 的分词组件。 /whoosh_backend.py)拷贝到 app下面,并重命名为 whoosh_cn_backend.py,例如blog/whoosh_cn_backend.py。 Whoosh'. from whoosh.fields import ID as WHOOSH_ID from whoosh.fields import BOOLEAN, DATETIME, IDLIST, KEYWORD from whoosh.highlight import highlight as whoosh_highlight from whoosh.highlight import ContextFragmenter
# Whoosh 简介 Whoosh 由 Matt Chaput 创建,它一开始是一个为 Houdini 3D 动画软件包的在线文档提供简单、快速的搜索服务工具,之后便慢慢成为一个成熟的搜索解决工具并已开源 Whoosh 纯由 Python 编写而成,是一个灵活的,方便的,轻量级的搜索引擎工具,现在同时支持 Python2、3,其优点如下: Whoosh 纯由 Python 编写而成,但很快,只需要 Python Whoosh 的官方介绍网站为:https://whoosh.readthedocs.io/en/latest/intro.html 。 如果你有 ES 方面的经验,那么,对于 Whoosh 是十分容易上手的。 按照笔者的理解以及 Whoosh 的官方文档,Whoosh 的入门使用主要是 index 以及 query。 关于 Whoosh 的使用,在官文文档中已经给出了详细的说明,笔者在这里只给出一个简单的例子,来说明 Whoosh 如何能方便地提升我们的搜索体验。
、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等 ,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用 whoosh文档 jieba:一款免费的中文分词包,如果觉得不好用可以使用一些收费产品 jieba文档 安装模块 pip whoosh_cn_backend.py 添加内容 whoosh_cn_backend.py import jieba from whoosh.analysis import Tokenizer, Token 'haystack', ) #更改分词引擎 HAYSTACK_CONNECTIONS = { 'default': { #使用whoosh引擎 'ENGINE ': 'haystack.backends.whoosh_cn_backend.WhooshEngine', #索引文件路径 'PATH': os.path.join(BASE_DIR
app路径下(我这里的app文件夹是viewer): search_indexes.py whoosh_cn_backend.py 这两个文件名不需要做变动。 如果是英文搜索,直接参考官方教程即可;如果是中文搜索,参考脚本之家的教程,改成whoosh_cn_backend.py所在的路径。 比如,我的whoosh_cn_backend.py在viewer路径下,就可以修改为: HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'viewer.whoosh_cn_backend.WhooshEngine', 'PATH': os.path.join(BASE_DIR, 'whoosh_index from haystack.views import SearchView from django.http import QueryDict class whoosh_search(SearchView
全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh ,solr,Xapian,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc 等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用 jieba:一款免费的中文分词包,如果觉得不好用可以使用一些收费产品 操作 1.在虚拟环境中依次安装包 pip install django-haystack pip install whoosh pip install jieba 2.修改settings.py文件 添加应用 INSTALLED_APPS = ( . ', 'PATH': os.path.join(BASE_DIR, 'whoosh_index'), } } #自动生成索引 HAYSTACK_SIGNAL_PROCESSOR
最常见的开源全文搜索引擎是 Elasticsearch,功能强大、性能强悍,但是其基于 Java 进行编写,在 Python 中使用不是很方便,最终州的先生选择了纯 Python 实现的全文搜索引擎——whoosh whoosh pip install django-haystack pip install jieba settings 配置 首先需要在 Django 项目的 settings.py 文件中进行配置 创建完中文分词器之后,我们就可以自定义 whoosh 的搜索引擎了。 自定义 whoosh 搜索引擎 在 /MrDoc/app_doc/search 目录下新建一个名为 whoosh_cn_backend.py 的文件(这个路径文件即是我们在 settings.py 文件中指定的引擎路径 ),复制 python 安装路径\Lib\site-packages\haystack\backends\whoosh_backend.py 的内容到这个文件中,并做如下修改: from whoosh.analysis
,Whoosh, *Xapian*搜索引擎,不用更改代码,直接切换引擎,减少代码量。 中文分词Jieba,由于Whoosh自带的是英文分词,对中文的分词支持不是太好,故用jieba替换whoosh的分词组件。 为使用的引擎必须要有,如果引擎是Whoosh,则PATH必须要填写,其为Whoosh 索引文件的存放文件夹。 这个APP下 并重命名为whoosh_cn_backend.py,例如article/whoosh_cn_backend.py。 ', #article.whoosh_cn_backend便是你刚刚添加的文件 'PATH': os.path.join(BASE_DIR, 'whoosh_index'
haystack 是 django 的开源搜索框架,该框架支持 Solr、Elasticsearch、Whoosh、Xapian 搜索引擎,不用更改代码,直接切换引擎。 搜索引擎使用 Whoosh,这是一个由纯 python 实现的全文搜索引擎,没有二进制文件等,比较小巧,配置比较简单。 需要设置 PATH 到 项目的 Whoosh 所有的文件系统的位置。 HAYSTACK_CONNECTIONS = { 'default': { # 使用whoosh引擎 'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine ', # 索引文件路径 'PATH': os.path.join(BASE_DIR, 'whoosh_index'), } } 使用python manage.py
haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看 whoosh文档。 HAYSTACK_CONNECTIONS = { 'default': { #使用whoosh引擎 'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine whoosh_cn_backend.py 6)打开复制出来的新文件,引入中文分析类,内部采用jieba分词。
安装必要依赖 要使用 django haystack,首先必须安装它,并且安装一些必要的依赖,具体需要安装的依赖有: Whoosh。 Whoosh 是一个由纯 Python 实现的全文搜索引擎,没有二进制文件等,比较小巧,配置简单方便。 jieba 中文分词。 由于 Whoosh 自带的是英文分词,对中文的分词支持不是太好,所以使用 jieba 替换Whoosh 的分词组件。 </head> 修改搜索引擎为中文分词 我们使用 Whoosh 作为搜索引擎,但在 django haystack 中为 Whoosh 指定的分词器是英文分词器,可能会使得搜索结果不理想,我们把这个分词器替换成 从你安装的 haystack 中把 haystack/backends/whoosh_backends.py 文件拷贝到 blog/ 下,重命名为 whoosh_cn_backends.py(之前我们在