2011-05-13 45 views
2

我的問題可能有點奇怪,但它一直困擾着我,因爲行爲不是我所期望的。這裏是我的查詢: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

原來,我的團隊中的其他人將HAYSTACK_DEFAULT_OPERATOR設置爲'OR'而不是'AND'。解釋一切 - 附加的過濾器標籤實際上擴大了結果的數量!

+0

所以你的問題是回答,對不對?隨意標記你自己的答案作爲正確的答案。 – Ski 2011-05-18 09:59:21

+0

是的,這兩天的等待期讓我忘記了 – munchybunch 2011-05-22 13:38:45

1

你可能想使用auto_query()進行搜索:

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

它有一些額外的功能,例如像準確的查詢檢索時的短語是用引號括起來。

+0

我也試過,沒有運氣。 =/ – munchybunch 2011-05-13 18:28:50