2

我有一个 Haystack/xapian 搜索索引django.contrib.auth.models.User。模板很简单

{{object.get_full_name}}

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

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

如何设置 Haystack 以便获得部分查询的适当结果?(我本质上希望它搜索*Sri Ragh*,但我不知道通配符是否真的可以解决问题,或者如何实现它们)。

这是我的搜索查询:

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

2 回答 2

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

于 2011-01-14T17:11:26.720 回答
-1

您可以使用 icontains 或startswith。

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

Model.objects.filter(content__icontains=query)

Model.objects.filter(content__startswith=query)

文档

于 2015-03-29T08:41:58.200 回答