【发布时间】:2011-01-15 12:01:36
【问题描述】:
我正在使用 django haystack 在我的 django 项目中实现搜索系统。问题是我的模型中的某些字段有一些法语口音,我想找到包含和不带口音的查询的条目。
我认为最好的想法是创建一个 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,您可以在查询末尾使用“~”进行查询,这会给您带来模糊的结果,而无需注意口音.
-
我更喜欢有一个不依赖于后端的解决方案。还是谢谢
-
我认为您所追求的称为“字符折叠”,虽然根据后端的不同设置不同,但设置非常简单。我在这里解释了如何为 solr 和 whoosh 设置它:gregbrown.co.nz/code/haystack-character-folding
标签: django encoding search-engine django-haystack