Django Haystack:搜索带或不带重音符号的术语

2023-12-02

我正在使用 django haystack 在我的 django 项目上实现一个搜索系统。问题是我的模型中的某些字段有一些法语口音,我想找到包含带或不带口音的查询内容的条目。

我认为最好的想法是创建一个 SearchIndex,其中包含带重音符号的字段和不带重音符号的同一字段。

对此有什么想法或暗示吗?

这是一些代码

想象一下以下模型:

Cars(models.Model):
    name = models.CharField()

以及以下 Haystack 索引:

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 }}

所以,这是一些伪代码,我不知道它是否有效,但如果您对此有任何想法,请告诉我!


我找到了一种方法来索引模型中同一字段的两个值。

首先,在模型中编写一个返回字段的 ascii 值的方法:

class Car(models.Model):
    name = model.CharField()

    def ascii_name(self):
        return strip_accents(self.name)

因此,在用于生成索引的模板中,您可以执行以下操作:

{{ object.name }}
{{ object.ascii_name }}

然后,您只需重建索引即可!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Haystack:搜索带或不带重音符号的术语 的相关文章

随机推荐