我很难让自动完成功能在搜索表单中使用 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 自动完成?