Django MySQL full text search Django MySQL full text search mysql mysql

Django MySQL full text search


The previously highest rated answer is deprecated. As of Django 1.10 there is no more search field lookup for MySQL databases (see the search section in the 1.10 documentation).

The release notes for 1.10 also propose a solution to this, by defining a custom lookup:

__search query lookup

The search lookup, which supports MySQL only and is extremely limited in features, is deprecated. Replace it with a custom lookup:

from django.db import modelsclass Search(models.Lookup):   lookup_name = 'search'   def as_mysql(self, compiler, connection):       lhs, lhs_params = self.process_lhs(compiler, connection)       rhs, rhs_params = self.process_rhs(compiler, connection)       params = lhs_params + rhs_params       return 'MATCH (%s) AGAINST (%s IN BOOLEAN MODE)' % (lhs, rhs), paramsmodels.CharField.register_lookup(Search)models.TextField.register_lookup(Search)


You can use full text search in django

MyItem.objects.filter(title__search="some search text")

One thing is - you can't define a fulltext index from a Django model, you need to do in directly in a database (using PHPMyAdmin or SQL query)

See Django documentation for field lookup called search


If you are looking for a beefy solution I recommend http://haystacksearch.org/

It is very well thought out.