2016-07-27 87 views
2

我用鶺鴒檢索算法:如何使鶺鴒搜索不區分大小寫

query = self.request.query_params 
questions = models.Questions.objects.filter(
    answer__isnull=False, 
    owner__isnull=False).exclude(answer__exact='') 
s = get_search_backend() 
results = s.search(query[u'question'], questions) 

這是我建立我的Questions模型的索引:

search_fields = [ 
    index.SearchField('question', partial_match=True, boost=2), 
    index.FilterField('answer'), 
    index.FilterField('owner_id') 
] 

但它區分大小寫。所以查詢howHow會給出不同的結果。

我需要讓我的搜索行爲這種方式:

當我輸入任一howHow,它應該返回

how to... 
How to... 
The way how... 
THE WAY HoW... 

換句話說,它應該找到所有的一切更多鈔票提到的how案例。

如何讓它工作?

P.S .:我使用默認後端,我可以根據需要自由更改它。

+0

您可以分享如何爲您的「問題」模型設置索引嗎? – Val

回答

2

對於W's的elasticsearch後端,partial_match=True索引的字段在lowercase中標記化。因此,要完成不區分大小寫的搜索,您只需要小寫查詢字符串:

results = s.search(query[u'question'].lower(), questions) 
+0

然後從大寫字母開始的問題將不會被發現 – Viktor

+0

有沒有辦法在settings.py文件中打開不區分大小寫的搜索?也許有這樣的事情:WAGTAIL_SEARCH_CASE_INSENSITIVE = True – robnardo