Easy FTS with Django and PostgreSQL
Project description
Easy full text search with Django and PostgreSQL. Sane defaults + auto creation of vector fields, indexes, and database triggers.
Example
Extend your model with the SearchableModel
class, and use the SearchableTextField
class to automatically setup full text search:
from django.db.models import TextField
from django_searchable.models import SearchableModel, SearchableTextField
class Blog(SearchableModel):
author_name = TextField() # will NOT have FTS setup automatically
title = SearchableTextField() # will have FTS setup automatically
text = SearchableTextField() # will have FTS setup automatically
Then search away via the Blog manager:
# takes a string of space separated terms
results = Blog.objects.search('spiderman suits')
# or a list of terms
results = Blog.objects.search(['water', 'baskets', 'leaking'])
# or a SearchQuery object
from django.contrib.postgres.search import SearchQuery
query = ~SearchQuery('superman') & SearchQuery('batman')
results = Blog.objects.search(query)
.search
adds a rank
annotation and automatically filters and sorts the resulting queryset.
By default, .search
will search through all SearchableTextField
fields on the model, but you can specify any subset:
results = Blog.objects.search('who is venom', fields=['title'])
Contributing
pipenv install --dev
createuser -s -P test_user # use 'password'
pipenv run ./manage.py test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django_searchable-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b09d691b3b786c309faf8bad099abc6eec653e4abc9e0d127b6154c1292a4a2 |
|
MD5 | 21cef019b198b785365e952aea32c3be |
|
BLAKE2b-256 | 753092dccb2dd9b1be9d0c2c77d021d0202c0de23a94a547e9c5438069a46c55 |