如何使用 django-haystack 和 elasticsearch 后端进行模糊搜索?

2024-05-05

看起来好像elasticsearch支持模糊查询(http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query/ http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query/)但我无法找到让 django-haystack 传递该选项的方法。

我深入研究了 django-haystack 搜索,它看起来好像在使用 elasticsearch 后端时使用“match_all”查询。是否可以在不修改 django-haystack 源代码的情况下获得模糊匹配行为?

干草堆来源:https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/elasticsearch_backend.py https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/elasticsearch_backend.py(我怀疑我需要更改 build_search_kwargs 方法)


无需 fork Haystack,您可以在自己的后端更新该方法(更多详细信息,请参阅扩展 Haystack 的 ElasticSearch 后端 https://wellfire.co/learn/custom-haystack-elasticsearch-backend/). The build_search_kwargs方法返回一个字典,因此您只需修改原始返回值即可。

免责声明:此代码只是您如何更新自己的后端的示例,not如何实现模糊搜索。

class FuzzyBackend(ElasticsearchSearchBackend):
    def build_search_kwargs(self, query_string, **kwargs):
        fuzzy = kwargs.pop('fuzzy', False)
        fuzzy_field = kwargs.pop('min_similarity', '')
        search_kwargs = super(FuzzyBackend, self).build_search_kwargs(
                query_string, kwargs)
        if fuzzy:
            search_kwargs = {'fuzzy': {fuzzy_field: query_string}}
        return search_kwargs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 django-haystack 和 elasticsearch 后端进行模糊搜索? 的相关文章

  • Django SessionWizardView不执行done方法

    我无法让我的 SessionWizardView 工作 当我提交最后一步时 向导跳回第一步 不执行done方法 views py class CvWizardView CookieWizardView form list InfoPerso
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • Heroku 与 django 通道的正确 procfile/要求是什么?

    tl dr django 频道应用程序在本地使用 manage py runserver 运行 但不在 heroku 上运行 我是 django 通道的新手 尝试使用 heroku 通道部署一个非常基本的 django 应用程序 我最初使用
  • Django:分解视图

    这实际上只是一个 最佳实践 问题 我发现在开发应用程序时 我经常会遇到a lot的意见 将这些视图分成几个视图文件是常见的做法吗 换句话说 不仅仅是views py 通常还有views 1 py views 2 py views 3 py
  • TEST 镜像默认数据库但没有数据

    我正在尝试对我的 Django 应用程序进行一些测试 我使用了数据库镜像作为测试数据库 当我尝试运行一些测试时 默认数据库 中的数据似乎在镜像测试数据库中不可用 default sqlite ENGINE django db backend
  • Django 在 rss feed 中指定频道图像的方式

    在 rss feed 中指定频道图像的 django way 是什么 我可以通过滚动我自己的 xml 来手动完成此操作 但我正在寻找一种正确的方法来完成此操作 Editdobrych 的解决方案在这里不太适用 因为我具体询问的是 RSS 而
  • 如何将 max_length 添加到 allauth 用户名

    我使用 Django allauth 作为我的 Django 站点的用户帐户框架 文档显示有一个ACCOUNT USERNAME MIN LENGTH http django allauth readthedocs io en latest
  • Google App Engine Flexi 上 Django 的 Postgres 设置

    我正在尝试在应用程序引擎灵活环境中使用 postgres 设置 django 我按照这里的说明进行操作 https cloud google com appengine docs flexible python using cloud sq
  • Django通用外键和select_相关

    我试图使用与通用外键的关系来选择模型 但它没有按预期工作 我认为用代码可以更好地说明和理解 class ModelA models Model created models DateTimeField auto now add True c
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • 如何在 Django 中使每五个帖子成为广告帖子

    我正在尝试允许用户赞助帖子 以便为该帖子带来更多点击量 我想让每五个帖子成为赞助帖子 但如果我尝试在模板中使用可整除并循环浏览广告 那么它将发布all第四个帖子后的广告 这是我尝试过的一些代码 编辑 我已将问题更改为不会显示帖子的问题 有人
  • Django Rest Framework 删除 csrf

    我知道有关于 Django Rest Framework 的答案 但我找不到解决我的问题的方法 我有一个具有身份验证和一些功能的应用程序 我向其中添加了一个新应用程序 它使用 Django Rest Framework 我只想在这个应用程序
  • 如何在 Django QuerySet 中将 DateField() + TimeField() 转换为本地时间?

    我的模型为这些字段 date models DateField 开始时间 models TimeField 结束时间 models TimeField 我想用以下方式注释查询集start datetime and end datetime
  • Django:测试客户端的上下文在 shell 中为空

    我无法访问context的属性HttpResponse来自 ipython 的对象 但单元测试访问context 这是单元测试 测试运行正常通过 from django test import Client TestCase from dj
  • 在 Django 模板中使用 forloop.counter 值作为列表索引

    在我的 Django 1 1 1 应用程序中 我在视图中有一个函数 它向模板返回一系列数字和项目列表列表 例如 data item1 item2 item3 item4 item5 item6 item7 item8 item9 retur
  • Heroku 上的 Django 翻译无法完全正常工作

    我在 Heroku 上部署了 Django 应用程序 并添加了https github com piotras heroku buildpack gettext git此 ugettext 构建包和应用程序的某些部分已注释翻译 本地可以用
  • 如何从 Django 管理界面禁用“最近操作”小部件?

    我不想展示最近的操作小部件在 django 管理站点中 我不知道如何完成此操作 你可以覆盖admin index html禁用显示的模板 有 您可能想要更改 删除的侧边栏块 有条件地启用或禁用操作 ModelAdmin get action
  • 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

    我想知道是否有人可以帮助指导解决这个相当常见的问题的方法 我正在构建一个简单的网站 用户可以连接他们的 Twitter 帐户进行注册 我想创建一个界面 向他们显示哪些推特好友已经在使用该网站 因此 我可以获得用户的 Twitter 朋友列表
  • JQuery:将 FormData 和 csrf 令牌一起发布

    Is the data 下面的行正确吗 我想将表单数据和 csrf 令牌发布到 Django 视图函数 file upload on change function var currentpath window location pathn

随机推荐