我正在使用django-haystack v2.0.0-beta和Whoosh作爲後端向我的Django應用程序添加搜索功能。創建索引並返回搜索結果到目前爲止工作得很好。現在我想啓用突出顯示功能,但我沒有得到它的工作。Django-haystack:如何在我的設置中啓用突出顯示?
我正在使用高度自定義的安裝程序,對於這種安裝程序,乾草堆文檔不是很有幫助。我的Django應用程序是一個純AJAX應用程序,即客戶端和服務器之間的所有請求都是通過使用jQuery和$.ajax()
異步處理的。這就是爲什麼我寫了一個自定義的Django視圖,它可以手動創建乾草堆搜索查詢集並將搜索結果轉儲到JSON對象中。所有這些工作正常,但突出顯示的添加不起作用。這裏是我的代碼,我到目前爲止有:
search_indexes.py
class CrawledWebpageIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
def get_model(self):
return CrawledWebpage # This is my Django model
forms.py
class HaystackSearchForm(forms.Form):
q = forms.CharField(
max_length=100,
label='Enter your search query')
views.py(我採取了一些代碼this post因爲它對我來說看起來很合理,但它可能是錯誤的)
def return_search_results_ajax(request):
haystack_search_form = HaystackSearchForm(request.POST)
response = {}
if haystack_search_form.is_valid():
search_query = haystack_search_form.cleaned_data['q']
sqs = SearchQuerySet().filter(content=search_query)
highlighted_search_form = HighlightedSearchForm(request.POST, searchqueryset=sqs, load_all=True)
search_results = highlighted_search_form.search()
# Here I extract those fields of my model that should be displayed as results
webpage_urls = [result.object.url for result in search_results[:10]]
response['webpage_urls'] = webpage_urls
return HttpResponse(json.dumps(response), mimetype='application/json')
只要搜索結果正確返回,此代碼工作正常。但是,當我嘗試訪問高亮文本片段的搜索結果,例如針對第一種:
print search_results[0].highlighted
然後,我總是得到一個空字符串作爲結果:{'text': ['']}
誰能幫我突出顯示功能的工作?非常感謝你提前。
你好!你使用的是乾草堆後端? – Emily
@Emily我使用Whoosh作爲後端。我已經在我原來的帖子中說過了。我知道Whoosh支持突出顯示,所以這不是導致我的問題的錯誤後端。 – pemistahl
對不起,錯過了這個問題。 – Emily