Djapian: версия 2.1

На выходных в очередной раз засел за Djapian и новый релиз сделал. Качайте. Там в основном улучшения и добавление полезных фич, но есть и важный багфикс.

Я перескажу Release Notes:

  • Язык стемминга можно задавать для каждого поискового запроса. Удобно, если документы в индексе могут быть на разных языках и по ним надо языко-зависимо искать. В прошлом релизе я это оторвал, но сейчас починил.
  • Добавлена возможность добавлять в индекс модели без специального определения индексера. В таком случае он сгенерируется автоматически, Примерно также ведет себя админка, когда в неё регистрируешь модель без явного указания ModelAdmin класса.
  • Добавлена возможность вытягивать объекты с select_related в prefetch режиме. Для этого надо его вызывать вот так: prefetch(select_related=True). Полезно в плане повышения производительности.
  • Добавлены методы filter и exclude для фильтрации результатов поискового запроса по тегам. Поддерживаются привычные для джанги предикаты сравнения: __exact, __gt, __gte, __lt, __lte, __in. Теперь удобно стало отбирать результаты поиска по каким-то атрибутам.
  • Добавлен композитный индексер, который позволяет делать запросы в несколько индексов (т.е. для нескольких моделей) одновременно. Поможет сделать "глобальный поиск по сайту" с однородным ранжированием.

Такие дела. В очередной раз призываю использовать Djapian, если вам нужен полнотекстовый поиск в ваших джанго-проектах. Я так же планирую написать цикл tutorial-постов, так что если кто сомневается, то не пропустите:-)

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

  1. Boo написал:

    Буду ждать tutorial-посты :)

    Оставлен 07 Апрель 2009 в 20:23
  2. bw написал:

    А я не буду ;-).

    ..bw

    Оставлен 08 Апрель 2009 в 01:38
  3. http://vluki.ya.ru/ написал:

    "Добавлен композитный индексер". А можно пример, как это использовать?

    Оставлен 04 Май 2009 в 21:16
  4. Александр Кошелев написал:

    Например так - поиск по трем индексам сразу:

    from djapian.indexer import CompositeIndexer
    
    comp_indexer = CompositeIndexer(Post.indexer, Comment.indexer, Tag.indexer)
    
    result_set = comp_indexer.search('query to posts, comments and tags index')
    
    Оставлен 04 Май 2009 в 22:28
  5. http://vluki.ya.ru/ написал:

    Решил попробовать. Индексирую базу новостей. В ней чуть более 100к новостей. Индексирует уже 3 часа. Это можно как то ускорить?

    Оставлен 04 Май 2009 в 22:48
  6. Александр Кошелев написал:

    Вы 2.1 версию используете?

    Индексируете через ./manage.py index --rebuild?

    Оставлен 04 Май 2009 в 23:34
  7. http://vluki.ya.ru/ написал:

    Да, именно так. До сих пор все индексирует.

    Оставлен 05 Май 2009 в 09:08
  8. bw написал:

    Что-то слишком долго. А база Djapian растет со временем? Может он там застрял на одном месте или по кругу ходит?!

    ..bw

    Оставлен 05 Май 2009 в 17:36
  9. Александр Кошелев написал:

    Я сейчас тестирую - пытаюсь 150К статей википедии индексировать. Действительно, скорость не большая. Нашел одно место, которое может серьезно убить производительность.

    Будет хотфикс.

    Оставлен 05 Май 2009 в 17:46
  10. http://vluki.ya.ru/ написал:

    Я ранее пробовал индексировать в версии 2,0 вроде, тогда минут за 20 все переиндексировалось. База была гдето 500мб. А щас растет но очень медленно. Общий объем за это время получился 70мб гдето. я уже не стал ждать, остановил все.

    Оставлен 05 Май 2009 в 18:38
  11. Александр Кошелев написал:

    Да, возможно, какие-то нововведения убили производительность. Я изучаю этот вопрос.

    О результатах напишу:-)

    Оставлен 05 Май 2009 в 18:55
  12. Александр Кошелев написал:

    Выпустил обновление - подробности тут.

    Оставлен 06 Май 2009 в 00:31