Sphinx и Django – замечательное рядом

by Larin

Интро

Давненько я ничего не писал. Очень много работы. Вот выдалась свободная минуточка и хочется сказать еще пару слов за Django.

Пара слов

Я уже писал поисковом движке Sphinx:Sphinx – настоящее быстрого поиска и использовании его в php-проектах.

А вот как происходит работа с замечательным “поисковиком” в Django:
описываем модель, и добавляем пару строчек для менеджера поиска


from djangosphinx import SphinxSearch
class City(models.Model):
    name            = models.CharField(max_length=32)
    slug            = models.SlugField(blank=True)
    country         = models.ForeignKey(Country)
    state           = models.ForeignKey(State, blank=True, null=True)

    class Meta:
        unique_together = (('country', 'state', 'slug'), ('country', 'state', 'name'))
        db_table = 'cities'

    search = SphinxSearch(
        index='cities', # defaults to cities either way
        weights={ # individual field weighting, this is optional
            'name': 100,
            'aliases': 90,
        }
    )

И все!

Но на этом вкусности не заканчиваются. Нам даже конфиг для Сфинкса писать не нужно – мы его сгенерируем автоматом:


# ./manage.py generate_sphinx_config cities >> sphinx.conf

Собственно поиск будет выглядеть, так:


results = City.search.query('new york')

Более подробно можно почитать в блоге David Cramer’s: Setting up Django and Sphinx Full-text Search (django-sphinx).