Индексирование. Проблемы выбора

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

В некоторые СУБД встроены механизмы полнотекстового индексировании, в другие нет. Но хочется иметь механизм универсальный и не зависящий от бекэнда хранения данных, ведь в конце концов информации может и не в базе вовсе храниться.

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

Вторая проблема выбрать реализацию для питона/джанги. Для джанги есть несколько сторонних приложений, которые позволяют использовать индексирование. Перечислю те, которые мне попались во время тематического поиска:

Последнее(на которое обратил моё внимание Lorien это не джанго приложение по сути, а фреймворк для индексирования, которые включает в себя бэкэнды разных движков в том числе и нативный питоновский для индексирония. Как я понял в процессе изучения, он как-то связан с джанговским бранчем индексирования. Но реализация пока простовата и я бы не рекомендовал его использовать.

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

Есть ещё конечно вариант - написать самому. Но на это может не быть времени и желания:) Но у меня желание было и достаточно давно уже я попробовал было написать что-то подобное( с использованием xapian для начала) и даже умудрился его использовать в коммерческом проекте, но как-то не срослось. И реализации сырая и идеи в ней. Поскольку писалось всё ещё на заре моего общения с джангой поэтому многие идейные моменты были сделаны кустарно и не "питонистично":)

В итоге долгого изучения различных вариантов, я остановился на djapian. Тем более, как я уже упомянул, с xapian я уже имел опыт общения и он мне понравился:) И я в этом окружении чувствовал себя достаточно комфортно и в случае чего можно будет поковырять исходники. И вот это "в случае чего" достаточно быстро случилось. Но об это расскажу в следующий раз.

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

  1. Alrond написал:

    Очень интересный опыт, спасибо, и главное вовремя...

    Оставлен 28 Январь 2008 в 23:00