[英]Django Haystack & Whoosh Search Working, But SearchQuerySet Return 0 Results
[英]django haystack Whoosh - SearchQuerySet().models(ModelName) not narrowing results
我在search_indexes.py中具有3個具有3個索引的模型,例如(Modelname1Index,ModelName2Index,Modelname3Index)。
SearchQuerySet()。filter是從所有三個搜索,但是我想分別搜索它們。
因此,我嘗試這樣做:
SearchQuerySet().filter(text=query).models(required_model_name)
但是,它返回的是整個搜索的結果(來自所有模型),而不是所提到的單個模型。
另外,在進行重建索引時,沒有索引為第三個模型建立索引的對象,因為該模型沒有任何行。
因此,.models(thirdmodel)返回空結果,但是.models(其他兩個模型中的任何一個)返回整個結果。
不幸的是, .models()
過濾器無法與最新版本的Haystack和.models()
一起正常使用。
您可以通過將Haystack降級為2.0.0,將Whoosh降級為2.4.1來解決此問題。
另請注意,使用HAYSTACK_SEARCH_RESULTS_PER_PAGE
在嘗試在配置中使用HAYSTACK_SEARCH_RESULTS_PER_PAGE
時出現錯誤,因此最好避免使用此設置。
不過,這並不可怕。
這部分基於James Lims的答案 ,但這對任何版本的Haystack和Whoosh都適用。 不幸的是,雙方都沒有真正采取行動,但是下面的解決方案似乎還不錯。
class MySearchQuerySet(SearchQuerySet):
def models(self,*mods):
# We have to redefine this because Whoosh & Haystack don't play well with model filtering
from haystack.utils import get_model_ct
mods = [get_model_ct(m) for m in mods]
return self.filter(django_ct__in=mods)
然后在任何地方SearchQuerySet
使用MySearchQuerySet
代替:
MySearchQuery().filter(name="foo").models(my_models.bar,my_models.baz)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.