PSearch – поиск файлов на локальных дисках.

Download

Основные возможности
Начало работы
Размышления
Начало работы
Текущая работа
Дополнительные функции
Командная строка
Технические характеристики
Соглашения
Вопросы и ответы
 

Основные возможности:
- строит индекс по тексту из файлов на локальных, сетевых дисках  и из потоков ваших plug-in;
- полнотекстный поиск;
- поиск по первым буквам слов;
- поиск в Win и DOS кодировках;
- загрузка найденного файла во внешний редактор, просмотр;
- форматы файлов TXT(OEM, ANSII), DOC, HTM(L), XLS, PPT;
- построение индекса ведётся в режиме простоя системы, может быть прервано и продолжено;
- все рабочие файлы в одном каталоге.

Размышления:
Универсальная программа, которая поможет свести к разумному минимуму использование структуры дерева каталогов как средства поиска. Удобнее искать файл по его содержимому, когда у темы документа нет чётких границ и его можно относить к различным каталогам.  С одной стороны, из-за необходимости нажатия клавиш, программа поиска увеличивает затраты мускульной энергии относительно выбора по каталогам под управлением «мыши». Но при объёме более 1000 файлов трудоёмкость практически уравнивается. Особенно удобен поиск файлов в рабочих группах, когда необходимо выбрать документ, который создавался другим работником и ход его мыслей при каталогизации – был не предсказуем.

Начало работы.
1. Рекомендую разместить программу PSearch.ЕХЕ в отдельном каталоге. Загрузить на выполнение. Необходимые файлы, если они не существуют, будут созданы внутри этого каталога.
2. Выбрать закладку «Настройка». Составить список каталогов, в которых нужно искать индексируемые файлы и нажать кнопку «Сканировать». (Предварительно можно выбрать режим работы с файлами DOC. Эти файлы могут обрабатываться быстрой внутренней процедурой или через OLE. В первом случае нет возможности индексировать запароленные и интерактивные файлы).
3. Процесс сканирования можно остановить кнопкой «Stop» и продолжить повторным нажатием на кнопку «Сканировать».
4. Любая функция работы с индексом, вызванная во время сканирования, автоматически вызывает остановку сканирования (Stop) и выполнение требуемой функции. Продолжить сканирование можно  повторным нажатием на кнопку «Сканировать»

Текущая работа.
5. Ввести фразу из одного или нескольких слов, которая может содержаться в искомом файле. Нажать кнопку «Начать поиск». Порядок слов и смысл фразы не имеет значения. Если некоторые слова введены не полностью, то нужно установить флаг «Частичный ввод». В последнем случае процесс поиска будет более длительным. Затянувшийся поиск можно прекратить кнопкой «Stop» и ввести более конкретную фразу, чтобы сузить область поиска.
6. После окончания поиска или при превышении предела количества находимых файлов в окне результатов отображаются пути найденных файлов в порядке условия максимальной близости введённых слов внутри искомого файла
7. Для обновления индекса нужно нажать кнопку «Сканировать» на закладке «Настройки». Программа проверит содержимое каталогов. Если появятся новые или изменённые файлы или был добавлен новый путь поиска, то они будут добавлены в индекс.
8. Кнопка «Сброс» очищает индекс.

Дополнительные функции.
9. Если в рабочем каталоге существует файл “InLog.log”, то функция «Сканирование» игнорирует список каталогов. Поток информации для индексирования вводится из этого файла. По окончании ввода файл “InLog.log” автоматически уничтожается. Если в этом процессе нажать «Stop», то оставшееся часть не будет введена, а файл будет уничтожен.
10. Закладка «Сканер» служит для ввода документов с оптического устройства. При нажатии кнопу «Ввести документ» программа сканирует бумажный документ, сохраняет на диске, опознаёт текст в этом документе,  вводит в индекс. Опционально-коммерческая функция. Для её включения свяжитесь с Sasa Zeman  public@szutils.net .

Командная строка.
11.  –p В интерфейсе программы будет только закладка поиска.
12.  –s  Автоматически запускается сканирование в свёрнутом окне. После сканирования программа завершается.
 

Технические характеристики.
13. Для Windows XX. Специальных тестов не проводилось. На 2К и ХР работает точно.
14. Чем больше RAM и HDD, тем лучше.
15. Т.к. программа работает в Idle, то для любителей тестов кроме общего времени индексирования честно выводится время затраченное алгоритмом (обозначение: CPU в  строке состояния). В прочем это время большое у всех программ, поэтому не имеет особого значения. Всё равно во время ожидания индексации придётся заняться ещё чем-то.
16. Объёмы файлов для текущей версии. Зависит от характера входной информации. Значения для одной из реальных установок: сырой объём индексируемых файлов – 3Гб, чистая информация для индекса – 100 Мб, индекс файл – 350Мб. Рост объёма индекса не пропорционален и меньше роста входного объёма. Индекс файл хорошо сжимается архиваторами. Поэтому для баз на CD лучше его хранить запакованным, а при инсталляции распаковывать на HDD. Это верно до выхода версии с упаковкой индекса на лету.
17. Специальных ограничений не установлено. Однако преодоление порогов 2Гб или 4Гб  (как по количеству, так и по объёму единичных файлов)  не тестировалось за ненадобностью.

Соглашения:
18.  Использование, копирование и распространение программы осуществляется свободно и бесплатно для жителей России и Югославии.
19.  Автор не несёт никакой ответственности за ущерб нанесённый программой и не отвечает за упущенную выгоду.
20. Автор утверждает, что в программе не размещены вирусы, шпионы и другой вредный код. Пользователь должен самостоятельно следить за вирусной чистотой получаемой им копии программы.
21. Если Вы не согласны хотя бы с одним из пунктов соглашения, то должны удалить эту программу со своего компьютера.

Вопросы и ответы.
В: Как пользоваться поиском документов на CD(DVD)?
О: Для того, чтобы вызвать в просмотр найденый файл, он должен существовать по "пути", когда происходила индексация. Но после переноса файлов на CD имя диска меняется.  Для корректной работы в программе есть условие: если файл не существует, то программа пытается найти его на текущем диске. (Изменяет букву диска в результате поиска.)
Поэтому просто запишите файлы, которые индексировали на диск. Соблюдайте при этом структуру каталогов до имени диска. Запишите программу вместе с сопутстующими файлами в любое место на диске.

В: Почему числа из XLS файлов не вводятся в индекс?
О: Из XLS фалов в индекс вводится только содержание текстовых ячеек. Алгоритм выделения формул и чисел известен, но в текущей версии не реализован из-за соображений целесообразности.

В: Почему некоторое таблицы из PPT не попадают в индекс?
О: Возможно таблицы вставлены как другой OLE объект (например excel).  Программа не обрабатывает ссылки и внедрённые объекты.

В: Мне не нравится внешний вид программы.
О: Интерфейс программы действительно выполнен в стиле архаично-стандартно-классический для того, чтобы быть универсально понятным. Вы можете заказать свой интерфейс и свои логотипы и формы, выслав в мой адрес своё пожелание (техническое задание).

В: Как ввести в индекс свои данные?
О: Создать файл с данными, назвать его Inlog.log, разместить в каталоге программы, запустить функцию сканирование. Формат файла Inlog.log  строчно-текстовый. Первая строка – имя файла, вторая – размер, третья – время создания, далее строки слов, которые попадают в индекс для указанного файла.

В: Как получить исходный текст?
О: Исходный текст будет свободно доступен после последней версии программы, когда автор прекратит её развитие. Думаю, что централизованное исправление неизбежных глюков правильнее частных изысков. Впрочем, интересные предложения будут рассмотрены.

В: Как включить обработку фалов других типов (например EML)?
О: Собственной программой через файл Inlog.log. Вы можете выслать мне подпрограмму  (в виде исходного текста на pascal) выделения текста из вашего типа фалов.
Пример:
function GetFileTXT(var name,s:string):boolean;
var i,j:integer;
    F:TFileStream;
    Pin:PChar;
  Begin
    result := False;
    F:=TFileStream.Create(name,fmOpenRead and fmShareDenyNone);
    j:=f.Size;
    if j=0 then begin s:=''; F.Free;  result := true; exit; end;
    setlength(s,j);
    s[j]:=#0;
    Pin:=@s[1];
    F.Read(Pin^,j);
    F.Free;
    for i:=1 to j do if ord(Pin^)<5 then begin s:=''; break; end
                                                        else inc(Pin);
    result := true;
  End;

grebenkin@avid.ru
 

Hosted by uCoz