我有django.contrib.auth.models.User
的Haystack / xapian搜索索引。模板只是
{{object.get_full_name}}
因为我打算让用户输入名称并能够搜索它。
我的问题是这样的:如果我搜索Sri
(我的完整名字),我会得到与我的名字有关的用户对象的结果。但是,如果我搜索Sri Ragh
- 即我的全名,以及我的姓氏的一部分,我就没有结果。
如何设置Haystack以便我可以获得部分查询的相应结果?
(我基本上希望它能够搜索*Sri Ragh*
,但我不知道通配符是否会真正发挥作用,或者如何实现它们。
这是我的搜索查询:
results = SearchQuerySet().filter(content='Sri Ragh')
答案 0 :(得分:5)
我使用类似的问题,作为解决方法或修复你可以更改查询查找
results = SearchQuerySet().filter(content__startswith='Sri Ragh')
问题是django-haystack没有实现搜索引擎的所有语言。当然你可以这样做。
results = SearchQuerySet().raw_search('READ THE SEARCH ENGINE QUERY SYNTAX FOR GET WILDCARD LOOKUPS')
正如Django-haystack所说,这不便携。
答案 1 :(得分:-1)
您可以使用icontains或startswith。
小心这个,如果查询是例如'r',这将带给你所有'Model'实体,其内容中有'r'。
Model.objects.filter(content__icontains=query)
Model.objects.filter(content__startswith=query)