2011-01-05 42 views
2

我有一個Haystack/xapian搜索索引django.contrib.auth.models.User。模板只是使用django-haystack,我該如何用部分詞彙進行搜索?

{{object.get_full_name}} 

因爲我打算讓用戶鍵入一個名稱並能夠搜索它。

我的問題是這樣的:如果我搜索,比如說,Sri(我的全名),我想出了與我的名字相關的用戶對象的結果。但是,如果我搜索Sri Ragh - 即我的全名和我的姓氏的一部分,我不會得到任何結果。

如何設置Haystack以便我可以獲得適當的部分查詢結果? (我基本上想要它搜索*Sri Ragh*,但我不知道通配符是否真的會做到這一點,或者如何實現它們)。

這是我的搜索查詢:

results = SearchQuerySet().filter(content='Sri Ragh') 

回答

4

我使用有一個類似的問題,解決方法或者一個修復你可以改變查詢查找

results = SearchQuerySet().filter(content__startswith='Sri Ragh') 

的問題是,django-乾草堆不實施搜索引擎的所有語言。當然,你可以做到這一點。

results = SearchQuerySet().raw_search('READ THE SEARCH ENGINE QUERY SYNTAX FOR GET WILDCARD LOOKUPS') 

正如Django-haystack所說,這是不可移植的。

+0

由於我使用的是默認SearchView類,我結束了由subclasing的ModelSearchForm和傳球,爲搜索查看的構造在urls.py.使用__startswith解決方案 謝謝你的幫助。我會盡快給你賞金。 – 2011-01-14 22:14:34

-1

您可以使用icontains或startswith。

要小心這個,如果一個查詢例如'r',這將帶給你所有'模型'的實體,其內容'r'。

Model.objects.filter(content__icontains=query) 

Model.objects.filter(content__startswith=query) 

看那documentation

+0

這是如何做一個全文數據庫搜索,並且不使用搜索引擎。 – 2016-01-16 00:34:21

相關問題