8

我正在使用 Haystack 进行搜索,返回的结果 SearchQuerySet 包含 None 元素:

>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]

运行rebuild_index 没有帮助。如果我从第一行删除 .models() 调用,问题就会消失。我可以从结果中过滤掉 None 元素,但我想知道这是否是预期的行为?

我正在使用 Django 1.4、Whoosh 和 Haystack 2.0.0-beta

4

3 回答 3

5

当 haystack 索引在数据库中有没有相应记录的记录时,我遇到了这个问题。

于 2012-05-05T12:02:38.060 回答
3

不,这绝对不是预期的行为,正如我所见,它似乎与 Whoosh 中的设计决策有关。而且,截至 2015 年 12 月,这似乎仍然是一个问题,正如可以在此处看到的那样。此外,我可以使用我的设置(django 1.8.5、haystack 2.4.1、Whoosh 2.7.0)重现它——这就是我来到这里的原因。

对我有用的快速而肮脏的解决方案:在索引上定义一个新字段(类型/模型/番茄),为每个模型设置相同的字段,然后过滤该值:

.filter(type='my_modelname')

代替

.models(MyModel).

我不知道(尚)这是如何扩展的,但似乎工作正常。

于 2015-12-14T17:22:33.823 回答
1

使用 Whoosh 时遇到了同样的问题,安装了 Elasticsearch 并且None元素消失了。

于 2015-06-20T02:50:10.180 回答