Algolia Search integration for Django
Project description
Algolia Search for Django
This package let you easily integrate the Algolia Search API to your favorite ORM. It’s based on the algoliasearch-client-python package. Both Python 2.x and 3.x are supported.
You might be interested in the sample Django application providing a typeahead.js based auto-completion and Google-like instant search: algoliasearch-django-example
Table of Content
Get started
Install
pip install algoliasearch-django
Setup
In your Django settings, add django.contrib.algoliasearch to INSTALLED_APPS and add two settings:
ALGOLIA_APPLICATION_ID = 'MyAppID'
ALGOLIA_API_KEY = 'MyApiKey'
There is also two optionals settings that take a string:
ALGOLIA_INDEX_PREFIX: prefix all index. You can use it to seperate different application, like site1_Products and site2_Products.
ALGOLIA_INDEX_SUFFIX: suffix all index. You can use it to differenciate development and production environement, like Location_dev and Location_prod.
Quick Start
Simply call AlgoliaSearch.register() for each of the models you want to index. A good place to do this is in your application’s AppConfig (generally named apps.py).
from django.apps import AppConfig
from django.contrib import algoliasearch
class YourAppConfig(AppConfig):
name = 'your_app'
def ready(self):
YourModel = self.get_model('your_model')
algoliasearch.register(YourModel)
And then, don’t forget the line below in the __init__.py file of your Django application.
default_app_config = 'your_django_app.apps.YourAppConfig'
By default, all the fields of your model will be used. You can configure the index by creating a subclass of AlgoliaIndex. A good place to do this is in a separeted file, like index.py.
from django.contrib.algoliasearch import AlgoliaIndex
class YourModelIndex(AlgoliaIndex):
fields = ('name', 'date')
geo_field = 'location'
settings = {'attributesToIndex': ['name']}
index_name = 'my_index'
And then replace algoliasearch.register(YourModel) with algoliasearch.register(YourModel, YourModelIndex).
Commands
python manage.py algolia_buildindex: index all the registered models. This one should be use the first time. Be careful, if the index already exist on Algolia, it will clear it first.
python manage.py algolia_reindex: reindex all the registered models. This command will first send all the record to a temporary index and then moves it when the build operation is completed. We highly recommand this command in production environement.
python manage.py algolia_applysettings: (re)apply the index settings.
python manage.py algolia_clearindex: clear the index
Search
We recommend the usage of our JavaScript API Client to perform queries directly from the end-user browser without going through your server.
Geo-Search
Use the geo_field attribute to localize your record. geo_field can be a tuple or a callable that return a tuple (latitude, longitude).
class Contact(models.Model):
name = models.CharField()
lat = models.FloatField()
lng = models.FloatField()
def location(self):
return (self.lat, self.lng)
class ContactIndex(AlgoliaIndex):
fields = 'name'
geo_field = 'location'
algoliasearch.register(Contact, ContactIndex)
Options
Custom objectID
You can choose which field will be used as the objectID. The field should be unique and can be a string or integer. By default, we use the pk field of the model.
class ArticleIndex(AlgoliaIndex):
custom_objectID = 'post_id'
Custom index name
You can customize the inde name. By default, the index name will be the name of the model class.
class ContactIndex(AlgoliaIndex):
index_name = 'Entreprise'
Index settings
We provide many ways to configure your index allowing you to tune your overall index relevancy. All the configuration are explained on our website.
class ArticleIndex(AlgoliaIndex):
settings = {
'attributesToIndex': ['name', 'description', 'url'],
'customRanking': ['desc(vote_count)', 'asc(name)']
}
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
Hashes for algoliasearch-django-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8b3a94bfffe0d1e334a965c0ce3085089d0404115a82e1073716166381dfe17 |
|
MD5 | fa264ba83e8ec87cf8f1148425f55393 |
|
BLAKE2b-256 | 63f756a3264aa4c66a17895690ee65a31dee10eaf08a3ff178acc271eb3cfdcf |
Hashes for algoliasearch_django-1.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21ccc918debb154dbc2df3c4a1526b2be3fe8105a3bfef658e70f87ff3be66ba |
|
MD5 | 483899671ca16a4e4f3812961144ed4b |
|
BLAKE2b-256 | 94312d1c5bbcd584fcab42152dd743a1b94b85b2ba8fd5364ca4407b7e5c5d21 |