Django 2 by Example
上QQ阅读APP看书,第一时间看更新

Adding full-text search to your blog

Now, you will add search capabilities to your blog. The Django ORM allows you to perform simple matching operations using, for example, the contains filter (or its case-insensitive version, icontains). You can use the following query to find posts that contain the word framework in their body:

from blog.models import Post
Post.objects.filter(body__contains='framework')

However, if you want to perform complex search lookups, retrieving results by similarity or by weighting terms, you will need to use a full-text search engine.

Django provides a powerful search functionality built on top of PostgreSQL full-text search features. The django.contrib.postgres module provides functionalities offered by PostgreSQL that are not shared by the other databases that Django supports. You can learn about PostgreSQL full-text search at https://www.postgresql.org/docs/10/static/textsearch.html.

Although Django is a database-agnostic web framework, it provides a  module that supports part of the rich feature set offered by PostgreSQL, not shared by other databases that Django supports.