Djapian: версия 2.2

Очередной релиз Djapian подоспел.

Коротко расскажу о нововведениях:

  • Добавлена работа с транзакциями Xapian при обновлении индекса. Теперь, если в процессе индексирования какого-то объекта, произойдет ошибка, то он не оставить никаких следов в индексе. Чуть-чуть просела производительность индексирования.

  • Добавлена возможность использовать X объекты для фильтрации результатов. X объект - это аналог django.db.models.Q объектов, которые позволяют писать комплексные фильтры. Поддерживаются операторы И (&), ИЛИ (|) и отрицания(~). Пример:

    from djapian import X
    
    result_set = Article.indexer.search('foobar')\
             .filter(X(type='news') | (X(type='article') & X(tag='featured')))
    
  • У каждого результата поиска появился атрибут tags с полями данного документа, которые хранятся непосредственно в индексе. В некоторых случаях позволяет не вытягивать из базы данных сам объект, используя в отрисовке выдачи элементы из tags.

  • Исправлен баг с индексированием значений чисел с плавающей точкой.

В следующем релизе, я надеюсь, появится выдача снипетов с искомыми термами и дженериковая инфраструктура для простой интеграции поиска в приложении - формы, вьюхи шаблонные теги.

Комментарии 2

  1. Евгений Сизиков написал:

    Александр, что-то у меня не получается использовать фильтрацию по заданным для модели тэгам типа:

    indexer.search().filter(tag_name=value)

    Всегда возвращается пустое множество, хотя без .filter() я получаю список хитов, и тэг у них проставлен.

    Вообще, фильтрация по тегам поддерживается или я хочу невозможного?

    Версия Djapian - 2.3.1

    Оставлен 14 Февраль 2010 в 15:37
  2. Александр Кошелев написал:

    Вообще, фильтрация по тегам поддерживается или я хочу невозможного?

    Безусловно оно должно фильтроваться. Надо отладить.

    Оставлен 14 Февраль 2010 в 16:51