使用django-haystack,如何仅使用部分术语执行搜索?

时间:2011-01-05 03:08:28

标签: django django-haystack

我有django.contrib.auth.models.User的Haystack / xapian搜索索引。模板只是

{{object.get_full_name}}

因为我打算让用户输入名称并能够搜索它。

我的问题是这样的:如果我搜索Sri(我的完整名字),我会得到与我的名字有关的用户对象的结果。但是,如果我搜索Sri Ragh - 即我的全名,以及我的姓氏的一部分,我就没有结果。

如何设置Haystack以便我可以获得部分查询的相应结果? (我基本上希望它能够搜索*Sri Ragh*,但我不知道通配符是否会真正发挥作用,或者如何实现它们。

这是我的搜索查询:

results = SearchQuerySet().filter(content='Sri Ragh')

2 个答案:

答案 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)

查看documentation

相关问题