gpt4 book ai didi

django - 干草堆__包含找不到通过GET传递的子字符串[ElasticSearch backeng]

转载 作者:行者123 更新时间:2023-12-03 00:34:05 25 4
gpt4 key购买 nike

我有以下模型:

class ProductIndex(CelerySearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
number = indexes.CharField()
description = indexes.CharField(model_attr='description')

在我的网页中,我对函数进行了AJAX调用,该函数应该返回给我的产品的描述中包含一些使用过的类型的单词。例如,如果我有一个描述为“Apple Macbook Pro”的产品,并且用户键入“book”,我想返回该结果。

我执行以下操作:
q = request.GET['q']
results = SearchQuerySet().models(Product).filter(description__contains=q)

但是,就像我说的那样,我确实有一个产品,其描述如下:
Macbook,并且用户键入 book,它将不起作用。但是, Macbook将起作用。

最后,如果我打印 q,它将返回 u'book'

最佳答案

您可以使用indexes.EdgeNgramField而不是indexes.CharField。这是自动完成文档(http://django-haystack.readthedocs.org/en/v2.0.0/autocomplete.html)中建议的。

您不需要更改查询代码。

编辑:

要使其不区分大小写,您可以执行以下操作

class ProductIndex(CelerySearchIndex, indexes.Indexable):
... fields here ...
def prepare_description(self, object):
return object.description.lower()

当查询时在 lower()上使用 q

关于django - 干草堆__包含找不到通过GET传递的子字符串[ElasticSearch backeng],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17029660/

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