gpt4 book ai didi

Django Haystack - 使用 SearchQuerySet () 按字段的子字符串过滤

转载 作者:行者123 更新时间:2023-12-04 18:08:28 27 4
gpt4 key购买 nike

我有一个使用 SOLR 进行索引的 Django 项目。

我正在尝试做一个 子串搜索使用 Haystack 的 搜索查询集 类(class)。

例如,当用户搜索词条 时“耳朵” ,它应该返回具有以下值的字段的条目: “搜索” .
如您所见, “耳朵” 的子串“搜索” . (明显地 :))

换句话说,在一个完美的 Django 世界中,我想要这样的东西:

SearchQuerySet().all().filter(some_field__contains_substring='ear')

的 haystack 文档中搜索查询集 ( https://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#field-lookups ),
它说只支持以下 FIELD LOOKUP 类型:
  • 包含
  • 精确
  • gt、gte、lt、lte
  • 开始于
  • 范围

  • 我尝试使用 __包含 ,但它的行为与 完全一样 __精确 ,它查找句子中的确切单词(整个单词),而不是单词的子串。

    我很困惑,因为这样的功能非常基本,我不确定我是否遗漏了什么,或者有另一种方法来解决这个问题(使用 Regex 或其他什么?)。

    谢谢

    最佳答案

    这可以使用 EdgeNgramField 来完成 field :

    some_field = indexes.EdgeNgramField() # also prepare value for this field or use model_attr

    然后对于部分匹配:
    SearchQuerySet().all().filter(some_field='ear')

    关于Django Haystack - 使用 SearchQuerySet () 按字段的子字符串过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20659126/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com