我正在使用django haystack在我的django項目上實現搜索系統。問題是我的模型中的某些字段有一些法語口音,我想查找含有和不帶重音的查詢內容的條目。Django Haystack:搜索帶有和沒有口音的字詞
我認爲最好的想法是創建一個帶有重音符的字段和沒有重音符的相同字段的SearchIndex。
任何想法或提示?
下面是一些代碼
想象一下以下機型:
Cars(models.Model):
name = models.CharField()
及以下草堆指數:
Cars(indexes.SearchIndex):
name = indexes.CharField(model_attr='name')
cleaned_name = indexes.CharField(model_attr='name')
def prepare_cleaned_name(self, object):
return strip_accents(object.name)
現在,在我的索引模板,我把兩個字段:
{{ object.cleaned_name }}
{{ object.name }}
所以,那是一些僞代碼,我不知道它是否有效,但如果您對此有任何想法,請告訴我!
我不確定,但是如果您使用的是類似於後端的solr,則可以在查詢結尾處使用'〜'進行查詢,這會給您提供模糊結果而不考慮口音。 – diegueus9 2010-02-11 02:36:34
我更喜歡有一個不依賴於後端的解決方案。無論如何感謝 – dzen 2010-02-11 10:17:13
我認爲你以後稱爲「字符摺疊」,儘管它根據後端具有不同的設置,但設置非常簡單。我已經解釋瞭如何爲solr和whoosh設置它:http://gregbrown.co.nz/code/haystack-character-folding/ – Greg 2012-12-05 21:27:15