
Точнее оно - приложение. Где-то больше года назад я писал про свой форк этого приложения. Тогда я кое-что там исправил и немного изменил под себя. Среди комментарии к почту, посвященному этому событию, есть один от автора самого Djapian - Рафаэля. Так вот после непродолжительного разговора с ним, мне дали комит доступ к репозиторию и благословили на контрибуцию некоторых из моих идей. Но мне тогда было уже не до движка индексирования, так как мной работал и мне этого хватало сполна и поэтому я как-то не собрался ничего в самом Djapian изменить или улучшить.
Прошло много времени и в конце лета во время отпуска (да, а как ещё программисту проводить отпуск?:)) я всё-таки решил, что не гоже держать два родственных проекта. Собравшись с силами и мыслями в перерывах между работай на загородном участке, я всё-таки закомитил кое-какие вещи в Djapian. И в последствии с легкостью перешел на его использование в блоге. Но вскоре при одном из обновлений блога, я сломал функциональность поиска и его пришлось отключить (что некоторые из вас заметили). К этому времени накопилось ещё несколько идей, которые не мешало бы реализовать в Djapian. Да и к тому же я стал owner'ом проекта и практически получил неограниченные возможности для его развития. На прошлой неделе я провел пару вечеров над кодом и в итоге зарелизил Djapian 2.0. А поиск на блоге ждет следующего апдейта,чтобы появиться вновь.
Соответственно, django-xapian больше не актуален и я вам рекомендую использовать Djapian.
Я же сейчас перечислю основные его параметры и достоинства, чтобы вы могли понять о чем речь и как он вам может пригодиться:
- построен поверх питонячего биндинга к С++ библиотеке - Xapian.
- высокоуровневый DSL, который скрывает все служебные операции.
- позволяет индексировать модели как структурированные документы.
- дает возможность индексировать не только поля модели, результат работы методов но и атрибуты связных объектов.
- позволяет осуществлять поиск по отдельным полям.
- предоставляет возможность использовать стемминг - язык может быть как глобальный заданным, так и разным для каждого объекта модели. Пока возможности немного ограничены, но в следующем релизе будет полный спектр.
- позволяет задать "вес" отдельных полей модели.
- имеет механизм корректировки строки запроса для такой приятной и удобной функции как подсказка вида: "Возможно вы имели ввиду ... ?" - с исправделенной строкой запроса на базе имеющихся термов в базе.
- ленивые запросы. По аналогии с джанговским ORM поиск осуществляется только в тот момент когда действительно понадобились результаты.
- Совместимость со стандартным паджинатором.
- Index Shell - командная оболочка для наблюдением за состоянием индекса. Моя гордость, предельно простая по сути штука, но очень полезная как для разработки, так и повседневного использования.
Многие из перечисленных особенностей являются следствием богатых возможностей самого Xapian, который ещё обладает очень полезными качествами:
- имеет инкрементальный индекс, т.е. позволяет быстро проводить добавления документов в него без полной пересборки.
- имеет полноценный язык запросов, включая булевы операции и поиск интервалов (пока не реализовано в Djapian, но очень интересная штука)
- легко интегрируется в многопоточное окружение по схеме "множественное чтение/одиночная запись"
Пробуйте, пользуйтесь и пишите баг-репорты и запросы на улучшения в багтрекер проекта - мы за ним следим:-)
Кстати, открыл для себя Google Code заново. С момент последнего моего с ним общения сервис заметно похорошел и оброс полезными функциями. Всё более очевидная альтернатива selfhosted инстансам трака.
Комментарии 5
Поправь ссылочку на http://xapian.org/
Оставлен 27 Февраль 2009 в 11:39 ¶Поиск интервалов очень нужная штука. Часто приходится выбирать итемы с фильтром по интервалу дат. Тот патч, в "Issue 20", как он? В примере приводится поиск по датам, но в конце делается замечание, что только "numerical ranges are supported". В документации к Xapian я наткнулся, что оно любит даты в формате YYYYMMDD.
п.с.: спасибо за djapian :)
Оставлен 19 Март 2009 в 14:05 ¶Патч в тикете был для строй версии. И я его тогда не решился применить, поскольку хотел более красивое решение сделать, но руки не дошли пока. Соответственно скорей всего либо в 2.1, либо в 2.2 я эту фичу так или иначе поддержу. Сам понимаю, что полезная;-)
Оставлен 19 Март 2009 в 19:45 ¶djapian.indexer.Indexer.field_class никак не используется :-).
..bw
Оставлен 30 Март 2009 в 22:09 ¶Да, это "тяжелое наследие прошлого":-)
Оставлен 31 Март 2009 в 18:50 ¶Оставьте комментарий