gpt4 book ai didi

Django - 全文搜索 - 通配符

转载 作者:行者123 更新时间:2023-11-29 11:23:13 25 4
gpt4 key购买 nike

是否可以在 Django 全文搜索中使用通配符?

https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/search/

post = request.POST.get('search')
query = SearchQuery(post)
vector = SearchVector('headline', weight='A') + SearchVector('content', weight='B')
rank = SearchRank(vector, query, weights=[0.1,0.2])
data = wiki_entry.objects.annotate(rank=SearchRank(vector,query)).filter(rank__gte=0.1).order_by('-rank')

目前它只匹配完整的单词。

字符如 * % | & 无效。

或者我必须回到 icontains 吗?

https://docs.djangoproject.com/en/1.11/ref/models/querysets/#icontains

感谢任何帮助

最佳答案

我扩展了 django SearchQuery 类并用 to_tsquery 覆盖了 plainto_tsquery。做了一些简单的测试,它有效。如果我发现这会导致问题,我会回到这里。

from django.contrib.postgres.search import SearchQuery

class MySearchQuery(SearchQuery):
def as_sql(self, compiler, connection):
params = [self.value]
if self.config:
config_sql, config_params = compiler.compile(self.config)
template = 'to_tsquery({}::regconfig, %s)'.format(config_sql)
params = config_params + [self.value]
else:
template = 'to_tsquery(%s)'
if self.invert:
template = '!!({})'.format(template)
return template, params

现在我可以做类似query = MySearchQuery('whatever:*')

关于Django - 全文搜索 - 通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110067/

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