I'm implementing a search system onto my django project, using django haystack. The problem is that some fields in my models have some french accents, and I would like to find the entries which contents the query with and without accents.
I think the best Idea is to create a SearchIndex with both the fields with the accents, and the same field without the accents.
Any idea or hint on this ?
Here is some code
Imagine the following models :
Cars(models.Model):
name = models.CharField()
and the following Haystack Index:
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)
now, in my index template, I put the both fields :
{{ object.cleaned_name }}
{{ object.name }}
So, thats some pseudo code, I don't know if it works, but if you have any idea on this, let me know !
I find a way to index both value from the same field in my Model.
First, write a method in your model which returns the ascii value of the fields:
class Car(models.Model):
name = model.CharField()
def ascii_name(self):
return strip_accents(self.name)
So that in your template used to generate the index, you could do this:
{{ object.name }}
{{ object.ascii_name }}
Then, you just have to rebuild your indexes !