Django Haystack拒绝显示任何结果,即使是荒谬的查询

时间:2011-05-13 16:28:40

标签: django django-haystack

我的问题可能有点奇怪,但由于行为不符合我的预期,所以一直困扰着我。这是我的疑问:

query = request.GET.get('q','')
#in search_indexes:
#start_datetime = indexes.DateTimeField(model_attr='start_datetime',null=True)
#end_datetime = indexes.DateTimeField(model_attr='end_datetime')
search_events = SearchQuerySet().models(Event).filter(content=query).
                filter(end_datetime__gte=datetime.now()).
                order_by("start_datetime")

现在我输入"asdfasdfjasldf lolol hwtf asdlfka"这样的查询,我仍然得到3个结果。 (注意,我只有5个事件要开始。不确定这是否会影响任何事情。)我打印出分数,它们是[42,42,42]filter()不符合确切的短语吗?特别是如果我使用引号?

//编辑 我也尝试使用auto_query,结果是一样的。

我对发生的事情感到很困惑,所以希望有人可以帮忙解决这个问题。提前谢谢!

2 个答案:

答案 0 :(得分:2)

原来我团队中的其他人已将HAYSTACK_DEFAULT_OPERATOR设置为'OR'而不是'AND'。解释所有内容 - 额外的过滤器标签实际上是在扩展结果数量!

答案 1 :(得分:1)

您可能希望使用auto_query()执行搜索:

search_events = SearchQuerySet().models(Event)
                                .auto_query(query)
                                .filter(end_datetime__gte=datetime.now())
                                .order_by("start_datetime")

它有一些额外的功能,例如当短语用引号括起来时的精确查询搜索。