Очередной релиз 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
Александр, что-то у меня не получается использовать фильтрацию по заданным для модели тэгам типа:
indexer.search().filter(tag_name=value)Всегда возвращается пустое множество, хотя без .filter() я получаю список хитов, и тэг у них проставлен.
Вообще, фильтрация по тегам поддерживается или я хочу невозможного?
Версия Djapian - 2.3.1
Оставлен 14 Февраль 2010 в 15:37 ¶Безусловно оно должно фильтроваться. Надо отладить.
Оставлен 14 Февраль 2010 в 16:51 ¶Оставьте комментарий