我有一个运行django-haystack的django站点,xapian作为后端。我让我的自动完成工作,但它回馈了奇怪的结果。从searchqueryset返回的结果不完整。
例如,我有以下数据......
['test','test 1','test 2']
如果我输入“t”,“te”或“tes”,我什么也得不回来。但是,如果我键入'test',我会收到所有结果,如预期的那样。
我看起来像这样......
results = SearchQuerySet().autocomplete(auto=q).values('auto')
我的搜索索引看起来像这样......
class FacilityIndex(SearchIndex):
text = CharField(document=True, use_template=True)
created = DateTimeField(model_attr='created')
auto = EdgeNgramField(model_attr='name')
def get_model(self):
return Facility
def index_queryset(self):
return self.get_model().objects.filter(created__lte=datetime.datetime.now())
任何提示都表示赞赏。感谢。
答案 0 :(得分:1)
有点晚了,但你需要检查被索引的最小ngram大小。它很可能是4个字符,所以它不会与任何字符数少于此字符的字符匹配。我不是Xapian用户,所以我不知道如何更改该后端的配置选项。