[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: падения mnogosearch



Hello!

On Thursday 12 November 2009 12:24:53 Иван Лох wrote:
> On Thu, Nov 12, 2009 at 10:21:57AM +0300, Alexey Pechnikov wrote:
> > Hello!
> > 
> > On Wednesday 11 November 2009 15:07:36 Stanislav Vlasov wrote:
> > > Если заменить mnogosearch - на что из того, что умеет индексировать не
> > > всё за раз (localhost - это ноут, который может быть выключен хотя бы
> > > потому, что его выдернули из розетки и забыли воткнуть обратно)?
> > 
> > И всего-то надо скрипт для рекурсивного обхода директорий, набор 
> > фильтров и SQLite с модулем FTS3.
> 
> По уму, он еще должен индексировать mbox (и хорошо бы IMAP ящики), использовать
> inotify и не индексировать при высокой загрузке дисковой подсистемы. 

В чем сложности? inotify прикрутить так:
set io [open "|inotifywait --monitor --event close_write --event moved_to --event delete_self --format \"%e %w%f\" $queuedir" r]
while {[gets $io line]} {
...

Для индексации mbox - добавить фильтр преобразования mbox и plain text. Можно
взять как образец скрипт /usr/bin/mbox2maildir Для imap - запускайте по крону
какой-нибудь из клиентов синхронизации и потом индексируйте тот же mbox.

> Еще он должен
> создавать user/group специфичные базы на основании прав доступа для совместного
> использования.

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

Проверить загрузку дисков можно по-разному, если скажете, какой способ вам более
по душе, могу предложить реализацию.

Собственно, тот скрипт, что у меня выложен, используется для индексации набора 
документов порядка гигабайта и база с поисковым индексом интегрирована с веб-порталом.
Переиндексируется минут за 10 по крону раз в сутки. 

> Если все это сделать, то получится tracker или beagle. А если сделать, так, чтобы
> это еще и работало -- вообще будет красота.

Это примеры для подражания?.. tracker на ноуте во время индексации нагружает диск так,
что все остальное перестает работать. Запустить несколько экземпляров нельзя, поскольку
к DBUS привязан, а на сервере вовсе не работает по той же причине. Более того, 
поисковые запросы тоже через DBUS идут к демону-индексатору... Про фильтры молчу, 
поскольку видел и более убогие. Про интеграцию с чем-либо и восе речи нет. Хоть и 
хранится поисковый индекс в SQLite-базе, но напрямую работать с ним невозможно, т.к.
требуются внутренние функции tracker для доступа к данным.
beagle на c# сделан, что уже много о чем говорит. Равно как использовать порт Lucene
вместо С-библиотеки тоже сомнительное достижение. Вместо использования стандартных
утилит какие-то самопальные фильтры на том же сишарпе... Поисковый индекс в собственном
формате, что делает его фактически бесполезным. Явный виндовый комбайн, "вещь в себе".

Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Reply to: