Search code examples
solrfull-text-searchdjango-haystack

Django Haystack + Solr : To get non redundant results in a query


This may be a very basic question. But still any links / solution will be helpful.

The indexes looks like this, for model 'Amodel'

id        name               user
1      Some name              u1
2      Some name              u2
3      Some name              u3
4      Not some name          u1
5      Not some name          u4
6      name 1                 u5
7      name 2                 u1
8      name 3                 u3
9      name 4                 u1

The query to get the values 'name' filed

SearchQuerySet().models(Amodel).filter(name = 'name').values_list('name')[0:5]

This will of course give the redundant results

['Some name', 'Some name', 'Some name', 'Not some name', 'Not some name']

But how can I get unique results like this

['Some name', 'Not some name', 'name 1', 'name 2', 'name 3']

Solution

  • From Solr's perspective, Field Collapsing is what you need. The bad news is this feature not implemented yet by Django Haystack. There is a pull-request exists but waiting to merge since 3 years.

    Anyway, you can try this experimental backend which written by Chris Adams.

    Hope it helps.