使用haystack实现全文搜索功能

LeetCode题解:28.找出字符串中第一个匹配项的下标【Python题解超详细,滑动窗口法、内置 find 函数、KMP算法】,知识拓展, KMP算法 LeetCode题解:28.找出字符串中第一个匹配项的下标【Python题解超详细,滑动窗口法、内置 find 函数、KMP算法】,知识拓展, KMP算法,基本概况、主要特点、核心思想、匹配过程、实现代码 28.找出字符串中第一个匹配项的下标:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从 0 开始)。如果needle不是haystack的一部分,则返回-1。 阅读详情

1.安装

Pip install django-haystack

安装haystack第三方搜索模块(app)类似于验证码模块captcha

 

Pip install whoosh

安装第三方搜索引擎

 

Pip install jieba

安装分词模块jieba

2.配置settings.py

将hanystack应用名写在所有应用之前

 

在settings.py中配置haystack中搜索使用的搜索引擎 这里用的是whoosh

HAYSTACK_CONNECTIONS = {

    'default': {

        'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',

        'PATH': os.path.join(BASE_DIR, 'whoosh_index'),

    }

}

并配置:

# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
# 设置搜索结果页,每页显示的数目,默认为20,可以自己修改
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 2

3.创建目录保存索引文件

在项目根目录创建一个名为whoosh_index的文件夹

4. 在urls.py中添加搜索路由

url(r'^search/', include('haystack.urls')),

5.指定索引模板文件

在项目的“templates/search/indexes/应用名称/”下创建“模型类名称_text.txt”文件。

上面的模型类名称为GoodsInfo,则创建goodsinfo_text.txt(全小写即可),此文件指定将模型中的哪些字段建立索引,写入如下内容:(只修改中文,不要改掉object)

{{ object.字段1 }}

{{ object.字段2 }}

{{ object.字段3 }}

 

6.

在应用目录下,添加一个索引

在子应用的目录下,创建一个名为 search_indexes.py 的文件。写入:

from haystack import indexes# 修改此处,为你自己的model

from df_goods.models import GoodsInfo

# 修改此处,类名为模型类的名称+Index,比如模型类为GoodsInfo,则这里类名为GoodsInfoIndexclass GoodsInfoIndex(indexes.SearchIndex, indexes.Indexable):

    text = indexes.CharField(document=True, use_template=True)

 

    def get_model(self):

        # 修改此处,为你自己的model

        return GoodsInfo

 

    def index_queryset(self, using=None):

        return self.get_model().objects.all()

 

7.使用jieba中文分词器替换默认分词器

 

在haystack的安装文件夹下,路径如“/home/python/.virtualenvs/django_py2/lib/python2.7/site-packages/haystack/backends”,建立一个名为ChineseAnalyzer.py的文件,写入如下内容:

 

import jieba

from whoosh.analysis import Tokenizer, Token

 

class ChineseTokenizer(Tokenizer):

    def __call__(self, value, positions=False, chars=False,

                 keeporiginal=False, removestops=True,

                 start_pos=0, start_char=0, mode='', **kwargs):

        t = Token(positions, chars, removestops=removestops, mode=mode,

                  **kwargs)

        seglist = jieba.cut(value, cut_all=True)

        for w in seglist:

            t.original = t.text = w

            t.boost = 1.0

            if positions:

                t.pos = start_pos + value.find(w)

            if chars:

                t.startchar = start_char + value.find(w)

                t.endchar = start_char + value.find(w) + len(w)

            yield t

def ChineseAnalyzer():

return ChineseTokenizer()

8.更改文件配置

然后放进来

 

然后打开whoosh_cn_backend.py      也就是settings.py中设置的

 

导入ChineseAnalyzer

From .ChineseAnalyzer import ChineseAnalyzer

并且配置搜索analyzer=  将解析器设置为ChineseAnalyzer()

 

9. cmd进入项目根目录生成索引

Python manage.py rebulid_index

 

 

Django 使用 Haystack 实现检索功能 全文检索和搜索引擎原理 搜索需求 当用户再搜索框中输入关键字后,我们要为用户提供相关的搜索结果 搜索实现 django 中是使用 icontains 去模糊匹配,但是底层会转换成 like 去查询 但是 like 关键字的效率很低,如果数据库中有百万计数据,那么 like 查询是很慢的 如果查询需要在多个字段中进行,使用 like 关键字也不是很方便 全文搜索方案 引入全文检索的方案来实现商品搜索 即在指定的任意字段中进行检索查询 全文检索需要配合搜索引擎来实现(elasticsearch、sol 阅读详情

相关推荐

Django_haystack全文搜索

haystack是全文搜索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看。whoosh是用纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看。jieba是一款免费的中文分词包,如果觉得不好用可以使用一些收费产品。

GDYY3721的博客 1431

django haystack实现全文检索的示例代码

主要介绍了django haystack实现全文检索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Django之Haystack对接搜索引擎框架Elasticsearch

Haystack是在Django中对接搜索引擎的框架,搭建用户和搜索引擎之间的沟通桥梁。它提供了一种简化的方式来集成不同的搜索引擎,如Elasticsearch、Whoosh、Solr等。

积跬步,至千里。 1774

保姆级教程:在Ubuntu 22.04上搞定PX4 V1.14 + ROS2 Humble的HITL仿真(避坑实录)

本文提供在Ubuntu 22.04上配置PX4 V1.14与ROS2 Humble的HITL仿真环境的详细教程,涵盖环境准备、固件编译、QGroundControl配置、ROS2通信设置及联调测试。特别针对版本兼容性、Gazebo插件构建和MicroDDS配置等常见问题提供避坑指南,帮助开发者高效搭建无人机仿真系统。

weixin_30836759的博客 1004

AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图)

本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。

red88的博客 802

find()函数 妙手 leetcode28 简单

"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。我开始想了双指针,然后去看题解,发现,就一行?第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。

Nevergiveup04031的博客 103

C++ 算法学习 之 string find

如果没有找到匹配项,该函数返回string:npos。下面的Size_t是一个无符号整型(与成员类型相同)。返回第一个匹配的第一个字符的位置。String的查找方法。

L2489754250的博客 407

GROMACS+PLUMED联合安装避坑指南:为什么你的plumed patch总是失败?

本文深入解析GROMACS与PLUMED联合安装中补丁失败的常见原因,并提供详细的避坑指南。针对版本兼容性、环境配置和编译选项等关键问题,给出从源码选择、环境搭建到手动合并补丁的完整解决方案,帮助用户成功整合这两个强大的分子动力学工具,实现增强采样模拟。

weixin_29302047的博客 288

计算机组成原理课设

计算机组成原理课程设计

qq_63306482的博客 8055

使用haystack实现django全文检索搜索引擎功能

前言 django是python语言的一个web框架,功能强大。配合一些插件可为web网站很方便地添加搜索功能。 搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单。 中文搜索需要进行中文分词,使用jieba。 直接在django项目中使用whoosh需要关注一些基础细节问题,而通过haystack这一搜索框架,可以方便地在django中直接添加搜索功能,无需关注索...

百雨的博客 315

多标签学习模型(一):Multi Label Knn

1.什么是多标签分类问题 2.传统的KNN算法 3.为什么传统的KNN算法不能够处理多标签问题 4.ML KNN的推导 5.ML KNN是如何解决多标签问题的 6.总结

weixin_42892235的博客 2606

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 755

RTK_ROS_导航(4):接入move_base

现在我们要将之前的数据接入到Move_base中,使得机器人能够根据Map上的终点进行导航,并且实现避障效果如下图。

旋风小短腿 1947

python全文检索引擎_Python中使用haystack实现django全文检索搜索引擎功能

前言django是python语言的一个web框架,功能强大。配合一些插件可为web网站很方便地添加搜索功能。搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单。中文搜索需要进行中文分词,使用jieba。直接在django项目中使用whoosh需要关注一些基础细节问题,而通过haystack这一搜索框架,可以方便地在django中直接添加搜索功能,无需关注索引建立、搜索解析...

weixin_39720807的博客 192

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

django项目中如何使用全文检索框架haystack的安装、配置和使用

1. 搜索引擎和全文检索框架概述 2. 安装和配置 (1)pip install djang-haystack==2.5.1 # 安装全文检索框架 注意:此案例中django使用的1.8.2,所以django-haystack==2.5.1不会报错 (2)pip install whoosh # 安装whoosh搜索引擎 (3)注册全文检索框架 INSTALLED_APPS = ( ... "haystack", # 注册全文检索框架 ) (4)全文检索框架...

weixin_42289273的博客 1292

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用django-haystack+whoosh实现全文搜索

好像是上个星期在写代码的时候遇到了一些问题,这个问题似乎我之前也遇到过,印象中好像也写博客进行记录了的,于是就想在我的博客系统中“查找”(表示很无奈居然没有搜索功能🥹🥹),于是就利用现有的过滤功能进行查找,但之前的分类和标签早就不记得了😅 ,于是就一直没有找到,但印象中确实写过相关内容…所以就有点尴尬了…😅😅😅,所以为了解决这个问题,花了将近一整天的时间给博客系统加了一个全文搜索的功能。

max_LLL的博客 1425

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django-Haystack 全文检索(Django实现搜索功能)

Django-Haystack 全文检索(Django实现搜索功能) 本文转载自Django Haystack 全文检索与关键词高亮 在此之前我们使用了 Django 内置的一些方法实现了一个简单的搜索功能。但这个搜索功能实在过于简单,没有多大的实用性。对于一个搜索引擎来说,至少应该能够根据用户的搜索关键词对搜索结果进行排序以及高亮关键字。现在我们就来使用 django-haystack 实现...

qq_42269354的博客 2901

使用haystack实现Django的全文搜索 -- Elasticsearch搜索引擎

全文搜索: 在使用python进行web开发的时候,免不了需要使用到全文搜索;全文搜索和我们平常使用的数据库的模糊搜索查询不一样,例如在mysql数据库中,如果进行模糊查询,比如 name like '%wang%'这一类的,效率是非常低的;而我们需求的全文搜索,在效率方面要求是很高的,而且必须能够对中文进行分词处理。 haystack: 1.介绍: 全文搜索的框架;Haystack是 BSD许可...

gymaisyl的博客 2892
上一篇: 构建python虚拟环境
下一篇: 使用Django自带的登录访问限制login_required
Buffing
博客等级 码龄9年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值