0

我有一个以 xapian 作为后端运行 django-haystack 的 django 站点。我的自动完成功能正常工作,但它返回了奇怪的结果。从 searchqueryset 返回的结果是不完整的。

例如,我有以下数据...

['测试','测试 1','测试 2']

如果我输入“t”、“te”或“tes”,我将一无所获。但是,如果我输入“测试”,我会得到所有结果,正如预期的那样。

我有一个看起来像这样的东西......

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())

任何提示表示赞赏。谢谢。

4

1 回答 1

1

有点晚了,但您需要检查被索引的最小 ngram 大小。它很可能是 4 个字符,因此它不会匹配任何字符少于此的字符。虽然我不是 Xapian 用户,所以我不知道如何更改该后端的配置选项。

于 2012-09-11T11:59:36.527 回答