Сегодня мы немного обновили сайт студии.
На главной появилась ссылка на наши разработки с открытым исходным кодом на гитхабе. Сейчас там несколько форков приложений для django, плагин для анимации спрайтов на jquery и репозиторий для DjangoDash 2011. О двух последних подробнее в следующий раз.
На всех наших новых проектах мы используем Django, верстаем как завещал великий БЭМ, применяя возможности современных браузеров, известные под термином HTML5. Теперь об этом свидетельствуют ссылочки в подвале главной.
С большим опозданием, но всё же обновился раздел Команда, свои заслуженные места обрели Рома и Виталий.
Появился раздел вакансии, мы всегда ищем энергичных и опытных укротителей питонов. Приходите к нам, у нас интересно.
9 августа 2011 г.
1 августа 2011 г.
Поиск в Django с помощью Sphinx
Автор:
Артём Голиков
Для интеграции Sphinx (движка для полнотекстового поиска) и Django существует приложение django-sphinx.
Это приложение автоматически генерирует конфигурационный файл (на основе которого строятся поисковые индексы), позволяет делать полнотекстовый поиск по моделям или по нескольким индексам одновременно (получая queryset-подобные объекты).
Управление свойствами индексов, весами атрибутов и тому подобным ведётся прямо из модели:
На основе этих данных manage-команда ./manage.py generate_sphinx_config составляет конфигурацию индексов.
К сожалению, проект развивается автором не очень интенсивно, но на github.com существует некоторое количество форков, решающих ряд проблем, среди которых изменившиеся в Django 1.3 настройки баз данных (поддержка нескольких БД) и поиск по нескольким индексам.
Для того, чтобы поиск одновременно по нескольким индексам позволял оперировать с результатами как с ORM-объектами, а не идентификаторами записей, необходимо проследить, чтобы выполнялись следующие два условия:
Наш форк django-sphinx можно найти тут
Это приложение автоматически генерирует конфигурационный файл (на основе которого строятся поисковые индексы), позволяет делать полнотекстовый поиск по моделям или по нескольким индексам одновременно (получая queryset-подобные объекты).
Управление свойствами индексов, весами атрибутов и тому подобным ведётся прямо из модели:
class MyModel(models.Model):
...
search = SphinxSearch(weights={ 'name': 100, 'description': 10, 'tags': 80}, mode='SPH_MATCH_ALL', rankmode='SPH_RANK_NONE')
...
На основе этих данных manage-команда ./manage.py generate_sphinx_config
К сожалению, проект развивается автором не очень интенсивно, но на github.com существует некоторое количество форков, решающих ряд проблем, среди которых изменившиеся в Django 1.3 настройки баз данных (поддержка нескольких БД) и поиск по нескольким индексам.
Для того, чтобы поиск одновременно по нескольким индексам позволял оперировать с результатами как с ORM-объектами, а не идентификаторами записей, необходимо проследить, чтобы выполнялись следующие два условия:
- В запросах, на основе которых строятся индексы (sql_query в секциях source конфига), в секции SELECT должно присутствовать <число> AS content_type, то есть должна быть связь с типом контента (для того, чтобы django-sphinx смог понять, какой модели принадлежит результат).
- В той же секции должно присутствовать объявление sql_attr_uint = content_type.
Наш форк django-sphinx можно найти тут
Подписаться на:
Сообщения (Atom)
