Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用django haystack,如何仅使用部分术语执行搜索?_Django_Django Haystack - Fatal编程技术网

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

使用django haystack,如何仅使用部分术语执行搜索?,django,django-haystack,Django,Django Haystack,我有一个Haystack/xapian搜索索引,用于django.contrib.auth.models.User。模板非常简单 {{object.get_full_name}} 因为我希望用户键入一个名称并能够搜索它 我的问题是:如果我搜索,比如说,Sri(我的全名),我会找到与我的名字相关的用户对象的结果。但是,如果我搜索Sri Ragh——也就是我的全名和部分姓氏,我不会得到任何结果 如何设置Haystack,以便为部分查询获得适当的结果? (我基本上希望它搜索*Sri Ragh*,但我

我有一个Haystack/xapian搜索索引,用于
django.contrib.auth.models.User
。模板非常简单

{{object.get_full_name}}
因为我希望用户键入一个名称并能够搜索它

我的问题是:如果我搜索,比如说,
Sri
(我的全名),我会找到与我的名字相关的用户对象的结果。但是,如果我搜索
Sri Ragh
——也就是我的全名和部分姓氏,我不会得到任何结果

如何设置Haystack,以便为部分查询获得适当的结果? (我基本上希望它搜索
*Sri Ragh*
,但我不知道通配符是否真的会起作用,或者如何实现它们)

这是我的搜索查询:

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

我以前也遇到过类似的问题,作为一种解决方法,或者可能是一种修复方法,您可以更改查询查找

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所说,这是不可移植的。

您可以使用icontains或startswith

注意这一点,如果一个查询是例如“r”,这将为您带来所有在其内容中有“r”的“模型”实体

Model.objects.filter(content__icontains=query)

Model.objects.filter(content__startswith=query)

看看

,因为我使用的是默认的SearchView类,所以我最终使用了您的_startswith解决方案,将ModelSearchForm子类化,并将其传递给URL.py中SearchView的构造函数。谢谢你的帮助。我会尽快给你奖金。这是你做全文数据库搜索的方式,不使用搜索引擎。