検索フォームで haystack と Solr を使用するためにオートコンプリートを取得するのに苦労しています。こちらのオートコンプリートの手順に従って、次の方法でインデックスを作成できました。
class PersonIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
text = CharField(document=True, use_template=True)
first_name = CharField(model_attr='first_name')
last_name = CharField(model_attr='last_name')
first_name_auto = indexes.EdgeNgramField(model_attr='first_name')
def index_queryset(self):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all().order_by('first_name')
def get_model(self):
return Person
そして、私の URL ルートが設定されている方法では、表示要求が送信されず、検索方法が機能します。
url(r'^search/person/', search_view_factory(
view_class=SearchView,
template='index.html',
form_class=ModelSearchForm
), name='haystack_search'),
指示によると、この方法でクエリを実行できます
from haystack.query import SearchQuerySet
sqs = SearchQuerySet().filter(content_auto=request.GET.get('q', ''))
しかし、この SearchQuerySet をどこに置くべきか、何をオーバーライドすればよいか、URL を正しくルーティングするように変更する方法がわかりません。私の検索は現在、この方法ですぐに使用できますが、 EdgeNgramField でオートコンプリートを試してみたいですか?