現在、 django-haystackv2.0.0-betaとWhooshをバックエンドとして使用してDjangoアプリケーションに検索機能を追加しています。これまでのところ、インデックスを作成して検索結果を返すことは問題なく機能します。ハイライト機能を有効にしたいのですが、機能しません。
私は高度にカスタマイズされたセットアップを使用していますが、干し草の山のドキュメントはあまり役に立ちません。私のDjangoアプリケーションは純粋なAJAXアプリケーションです。つまり、クライアントとサーバー間のすべてのリクエストは、jQueryとを使用して非同期に処理されます$.ajax()
。そのため、haystack検索クエリセットを手動で作成し、検索結果をJSONオブジェクトにダンプするカスタムDjangoビューを作成しました。これはすべて正常に機能しますが、強調表示の追加は機能しません。これが私がこれまでに持っている私のコードです:
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 (私には合理的に見えたので、この投稿からいくつかのコードを採用しましたが、おそらく間違っています)
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': ['']}
誰かがハイライト機能を機能させるのを手伝ってもらえますか?事前にどうもありがとうございました。