Search code examples
djangodjango-haystack

Using django-haystack, how do I perform a search with only partial terms?


I've got a Haystack/xapian search index for django.contrib.auth.models.User. The template is simply

{{object.get_full_name}}

as I intend for a user to type in a name and be able to search for it.

My issue is this: if I search, say, Sri (my full first name) I come up with a result for the user object pertaining to my name. However, if I search Sri Ragh - that is, my full name, and part of my last name, I get no results.

How can I set Haystack up so that I can get the appropriate results for partial queries? (I essentially want it to search *Sri Ragh*, but I don't know if wildcards would actually do the trick, or how to implement them).

This is my search query:

results = SearchQuerySet().filter(content='Sri Ragh')

Solution

  • I use to have a similar problem, as workaround or maybe a Fix you can change the query lookup

    results = SearchQuerySet().filter(content__startswith='Sri Ragh')
    

    The issue is that django-haystack doesn't implement all lingos from search engines. Of course you can do this.

    results = SearchQuerySet().raw_search('READ THE SEARCH ENGINE QUERY SYNTAX FOR GET WILDCARD LOOKUPS')
    

    As Django-haystack says, this is not portable.