使用Django/Haystack/SOLR,我希望能夠將搜索結果限制在django_ids特定範圍內的那些記錄。獲取這些ID不是問題,但試圖通過它們進行篩選會產生一些意想不到的效果。代碼如下所示(爲清晰起見,修剪了外部代碼):過濾乾草堆(SOLR)結果django_id
def view_results(request,arg):
# django_ids list is first calculated using arg...
sqs = SearchQuerySet().facet('example_facet') # STEP_1
sqs = sqs.filter(django_id__in=django_ids) # STEP_2
view = search_view_factory(
view_class=SearchView,
template='search/search-results.html',
searchqueryset=sqs,
form_class=FacetedSearchForm
)
return view(request)
在標記爲STEP_1的位置,我獲取了所有數據庫記錄。在STEP_2中,記錄成功縮小到我對django_ids列表的期望數量。在用戶在表單中指定搜索詞的情況下顯示搜索結果時出現問題。我沒有返回與STEP-2匹配的所有記錄,而是從STEP_2中獲取所有記錄,並從STEP_1中獲取與該術語匹配的所有記錄。
因此,大概我需要在haystack/views.py中重寫SearchView中的一個/一些方法,但是什麼?任何人都可以提出一種實現這裏所需要的方法嗎?