我正在使用Haystack进行搜索,返回的结果是SearchQuerySet包含None元素:
>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]
运行rebuild_index没有帮助。如果我从第一行删除.models()调用,问题就会消失。我可以从结果中筛选出无元素,但我想知道这是否是预期的行为?
我正在使用Django 1.4,Whoosh和Haystack 2.0.0-beta
答案 0 :(得分:4)
当haystack索引在DB中没有相应记录的记录时,我遇到了这个问题。
答案 1 :(得分:3)
不,这绝对不是预期的行为,正如我所看到的,似乎与飞快移动中的设计决定有关。而且,截至2015年12月,这仍然是一个问题,可以看出here。另外,我可以用我的设置(django 1.8.5,haystack 2.4.1,Whoosh 2.7.0)重现它 - 这就是我来这里的原因。
对我有用的快速而肮脏的解决方案:在索引上定义一个新字段(类型/型号/番茄),为每个模型设置相同的字段,并根据该值进行过滤:
.filter(type='my_modelname')
而不是
.models(MyModel)
。
我不知道(但)这是如何扩展的,但似乎工作正常。
答案 2 :(得分:1)
使用Whoosh遇到同样的问题,安装了Elasticsearch并且None
元素消失了。