2012-06-20 75 views
0

我有一個django網站,運行帶有xapian作爲後端的django-haystack。我的自動完成工作正在進行,但它會給出奇怪的結果。從searchqueryset返回的結果不完整。Django-haystack(xapian)自動填充功能給出不完整的結果

例如,我有以下的數據...

[ '測試', '試驗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()) 

任何提示讚賞。謝謝。

回答

1

有一點晚了,但您需要檢查正在編制索引的最小長度大小。它最有可能是4個字符,所以它不會比任何字符少的字符。儘管我不是Xapian用戶,但我不知道如何爲該後端更改此配置選項。

+0

你是對的 - 但是,我不認爲有一種方法來改變上面列出的設置的克的大小。我最終轉而使用更易於調整的彈性搜索(或者至少有更好的文檔記錄)。 ES + Haystack解決了我的問題。 – rozap