1

Тема: Сканированные документы архива и Javascript

В наличие Сервер под 2008R2, куча документов TIF и задача осуществить управляемый архив.
Пользователи раскиданы в сети по ЛВС и ДСЛ технологии, сколько точно будут заходить и как часто - неизвестно, но установлен временный лимит пользователей 500.
Не зная новых технологий (увы) и имея опыт создания веб-сайтов я принялся собирать все в кучу на основе хтмл, т.е. создал локальный в сети сайт на статических страницах, чтобы как то разгрузить себя от рутинной работы начал изучать ява-скрипт и немного уже внедрил пользуясь опытом гуру, благо интернет есть. Вот недавно закрались сомнения в правильности выбранного пути, т.к. требуется помощь в написании некоторых блоков на яваскрипте..
Что сделано:
-созданы папки проектов ххххх (10250 или 25601), где лежат сканированные файлы по маске ххх.хх.хххх_ххххх.**.ххх_ххх (**. - может отсутствовать)
-оболочка сайта работает исправно, создан поиск на яваскрипте по ключевым словам (жуть т.к. все вбивается по шаблону в тело хтмл поисковой страницы по строчно для каждого проекта)
-внедрена иерархия страниц-ссылок для 1 из 27 групп (первые ххх в названии файла)
-папки проектов находятся на этом же сервере, но не привязаны к сайту в нем же, они открываются в новом окне, как на своем диске проводником (просто и дешево)
- к каждому проекту создан js файл для удобства занесения и изменения данных о самом проекте (кол-во файлов, наименования, спец. данные для вставки в хтмл...)

Возможно было бы правильно использовать MySQL, но нет знаний по этому делу...

Родилась идея сократить ненужную никому иерархию, использовав кнопки РАДИО или ГАЛОЧКИ, когда пользователь выбирает группу, после чего № цеха, а потом №здания... но возникает проблемма - необходимость создания массива с занесением большого числа данных, а после - лишь частичной выборкой по отмеченным критериям..

В результате чего прошу лишь:
1. оценить рациональность применения яваскрипта
2. помочь в написании кода по поиску нескольких проектов по идентификационным данным вводимых при запросе пользователем


В итоге мы получили в принципе два пути поиска нужных документов: длинный - группа-номер цеха-номер здания - а в нем куча проектов - выбирай и открывай папку с файлами!!!
и второй более короткий, но надо знать номер проекта - открывай папку с файлами!!!
плюс поиск по внедренным на страницу хтмл данным (не автоматизировано)
Но неполучена система, некритичная к мелким изменениям без правки хтмл страниц! А хотелось бы вносить изменения только в папки проектов (менять файлы, их кол-во и тп) и js файлы этих проектов.
Если есть необходимость - поделюсь с вами бета версией для анализа проделанной мною работы (вышлю архив) и понимания отсутствия проффессионализма в написании скриптов,
...могу выложить скриншоты.

Любители построили Ковчег, а профессионалы - Титаник.

2 (изменено: Rumata, 2010-12-01 22:33:48)

Re: Сканированные документы архива и Javascript

Если все файлы, документы, архивы лежат централизованно, на одном хосте - поднимите FTP-сервер с read-only доступом для всех. Каталогизируйте, так как удобно Вам или Вашим коллегам. Этого достаточно. Аналогичная ситуация была на моей предыдущей работе - там, на момент моего прихода в компанию, уже был поднят на отдельной машине FTP-сервер. Правда доступ был read-write для всех, но в целом архив поддерживался в более-менее упорядоченном виде. Раньше он был на win32-системе, теперь - на FreeBSD.

В последствии, можно добавить красивые и удобные html-страницы.

( 2 * b ) || ! ( 2 * b )

3

Re: Сканированные документы архива и Javascript

В "голом" виде ФТП сервер неимеет наглядного красивого поиска и навигации в сравнении с вебсервером.. роль кроме веба по доступу к файлам я серверу уже назначил...
По доступу фтп есть спец программы (даже бесплатные) с парольной защитой, настраиваемыми правами и т.п. - в этом проблемм нет.

Возможно кто-то подскажет как вынести из хтмл страницы поиск, вот код (цель идеи - сделал хтмл страничку 1 раз и забыл):

<table width=100% cellpadding=0 cellspacing=0>
    <tr>
        <td class=head align=right>
            <img src="images/pt.gif" width=1 height=3>
        </td>
    </tr>
</table>

&nbsp;&nbsp;<h2 align="center">Поиск</h2>
<hr noshade size=1>
<table>
<tr>
        <td width=30></td>

        <td>
          <span class=h5>
            <br>
<p>Поиск работает в режиме тестирования.</p>
<p>Поиск осуществляется только по основной базе сканированных данных.</p>
<p>Внимание! Вывод найденных данных по архиву осуществляется в текущем или новом окне браузера в зависимости от версии и надстроек браузера (IE).</p>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var item = new Array();

/* Вот, собственно, и самый главный
момент кода. Добавьте здесь столько
страниц, сколько требуется для поиска.
*/

// "имя файла","путь","Название Страницы","Много,Ключевых,Слов","Описание страницы"

c=0; item[c]=new Array("index.html","","Стартовая страница","index,основная,стартовая","Архив ПКО.");
c++; item[c]=new Array("default.htm","","Стартовая страница","default,основная,стартовая","Архив ПКО.");
//
c++; item[c]=new Array("spez1.htm","","Спецификация","доступ,доступа,логин,пароль,спецификация","Спецификация доступа.");
c++; item[c]=new Array("spez2.htm","","Памятка","доступ,доступа,логин,пароль,спецификация,ГОСТ,таблица,Р,ОИТ,ПКО,маркировка","Памятка.");
//
c++; item[c]=new Array("baza1.htm","","База основная сканированная","база,сканированная,основная,архив,первая","База сканированная основная.");
c++; item[c]=new Array("baza2.htm","","База основная внешних документов","база,сканированная,основная,внешних,документов,архив,вторая,внешние,документы,документ,внешний","База сканированная внешних документов.");
c++; item[c]=new Array("proekt.htm","","Проекты","проекты,все,всё,весь,проект,all","Все проекты.");
//
c++; item[c]=new Array("bsoTXW.htm","","База основная. ТХ - технология производства","база,технология,производства,ТХ,TXW","ТХ - Технология производства.");
//
c++; item[c]=new Array("pr25605.htm","","Проект 25605","проект,25605,супер,пластификатор,суперпластификатор,здание,140,141,141а,142,","Проект 25605.");
//
page="<html><head><title>Результаты поиска</title></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=80%>";


function search(frm) {
win = window.open("","","width=800, height=500, scrollbars=yes, resizable=yes, status=yes, menubar=yes");
win.document.write(page);
txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 4, 2, 3);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
n = 0; w = -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, win, n);
fnd[w] = 0;
}
win.document.write("</table><br>Всего найдено: "+total+"<br></body></html>");
win.document.close();
}
function show(which,wind,num) {
link = item[which][1] + item[which][0];
line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> Совпадений: "+num+"<br>";
line += item[which][4] + "<br>"+link+"</td></tr>";
wind.document.write(line);
return 1;
}
//  End -->
</script>
</HEAD>

<BODY>

<center>
<form method=get action="javascript:void(0)" onsubmit="search(this); return false;">
<tr><td><input type=text name=srchval value=""><input type=submit value="Найти"></td></tr>
</form>
</center>

        </td>
</tr>
</table>
Любители построили Ковчег, а профессионалы - Титаник.

4

Re: Сканированные документы архива и Javascript

У Вас уже работает веб-сервер. Может быть имеет смысл настроить на нем CGI-приложение, которое и будет выполнять "индексирование" содержимого массива файлов на хосте?
Например, так работает библиотека Машкова - только текстовые файлы (или их сжатые аналоги) и один-два скрипта для генерации некоторого подобия каталогизации и поисковый скрипт, который пробегает по всем файлам.
Небезызвестный ресурс mp3.int.ru (уже не существует, самый большой архив музыки - 6 ТБ) имел решение схожее с Вашей задачей - все лежит на FTP-сервере, пользователи могли скачивать как по FTP, так и по HTTP. Простой CGI-скрипт выполнял поиск по всему архиву.

Как вариант. Создайте статичную html-страницу скриптом - список всех файлов со ссылками. Если файлы обновляются/добавляются, соответственно, обновляйте и страницу - вручную или автоматически, по расписанию.

( 2 * b ) || ! ( 2 * b )

5

Re: Сканированные документы архива и Javascript

поставить мс-сёрч и не парить людям мозг

Я конечно далек от мысли... (с)

6

Re: Сканированные документы архива и Javascript

В базе будет 28000 проектов, вот только 1 из них занял 134 мега и содержит около 90 файлов..что же будет дальше?
пока скрипт будет пробегать по всем папкам.. полчаса уйдет, да еще прикинуть что враз зайдут хотя бы 10 чел.. думаю - в таком случае придется сделать админку для добавления, а также обновления важных страниц ресурса...
А задача недавно была поставлена так - ты должен сделать 1 раз и не притрагиваться более, хм.. Еслиб все вебсерваки так работали без постороннего вмешательства - запустил и забыл..
Если у кого еще будут какие соображения - рад их здесь увидеть до наступления Нового Года!

Любители построили Ковчег, а профессионалы - Титаник.

7

Re: Сканированные документы архива и Javascript

ПС: у меня батник 28000 пустых папок создавал около 5 минут.. а состоял из 1 строчки -цикла,

Любители построили Ковчег, а профессионалы - Титаник.

8 (изменено: Rumata, 2011-01-18 22:41:30)

Re: Сканированные документы архива и Javascript

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

Необходимо организовать простой и удобный сервис доступа к данным файлам с элементами поиска.

Для решения задачи на (б) можно
1. открыть доступ к корневому каталогу хранилища (shared или Samba)
2. поднять FTP сервер в режиме read-only
3. поднять HTTP сервер

СУБД не требуется (накладные расходы, лишний софт, отсутствие практики, другое)

Пункт 1 не обсуждался, 2 был отклонен, так как отсутствует поиск, не видна структура подкаталогов, 3 - предпочтителен.

Во первых, JavaScript выполняется на стороне клиента, то есть в веб-браузере, после того как страница загрузилась в него. Она не имеет прямого доступа к данным на сервер. JavaScript-код имеет доступ только к объектам JavaScript, определенным в глобальной области видимости браузера и элементам страницы, то есть DOM.

Вам необходимо:
1. организовать на (б) хранилище - структуру каталогов и файлов, к которым будут иметь доступ клиенты (а) по протоколу HTTP 9Ваш предпочтительный вариант)
2. поднять и настроить на (б) веб-сервер, который будет отдавать данные из хранилища и красивую страницу - список файлов на сервере
3. создать скрипт, который будет сканировать все каталоги хранилища и сохранять результат в текстовый файл в формате HTML, который будет отображаться всем пользователям (а)

Я правильно описал задачу и требования?

( 2 * b ) || ! ( 2 * b )

9

Re: Сканированные документы архива и Javascript

Столько много букв у вас тут, что я немного подзапутался.
Посмотрите Everything-1.2.1.371 Может быть это то что вам нужно? Отличная программа, есть и FTP и HTTP серверы встроенные.
Или я не понял вас?

Нас невозможно сбить с пути, нам пофигу куда идти.

10

Re: Сканированные документы архива и Javascript

DnsIs
: ) Это вопрос не ко мне, а к автору темы. Ну а много слов, от того что есть желание помочь человеку и максимально подробно узнать о его задаче.

( 2 * b ) || ! ( 2 * b )

11

Re: Сканированные документы архива и Javascript

1. Есть некоторое кол-во клиентов.
2. Есть сервер с Виндовс 2008.
3. Есть 2 роли Веб-сервера и Файлового серверов.
4. Есть некоторое кол-во сканированных данных, которые продолджают накапливаться по определнным правилам формируя одну расшаренную общую папку с подкаталогами. Права (полные/только чтение) для доступа к этой главной папке (СКАН) раздает Сервер 2008.
5. Имена файлов сканированных данных присваивают в строопреденном ключе, т.е. по шаблону - ххх.хх.хххх_ххххх.**.ххх_ххх (**. - может отсутствовать).
6. Задача состоит в том, чтобы создать программу управления Архивом (накопленных данных в виде файлов с расширением ТИФФ, хотя в папках еще пока присутствуют несколько десятков файлов типа ПДФ, но в настоящее время такие файлы более не принимаются).

Мною были предприняты попытки создать такую программу на основе личного опыта - создания небольших сайтов разветвленной структуры, однако создавать каждую страницу для проектов (а их 28000) - глупо. Поэтому я взялся более плотнее изучать ЯваСкрипт, но меня не спрашивая на работе поставили в известность о том, что мне необходимо написать программу управления архивом. Просто я заверил начальника конструкторского отдела, что создать архив для чтения данных не составит особого труда... Этим соответственно бысто воспольховались, . Отступать некуда, я и назвал срок - месяц или полтора. С учетом моих предположений, что я архив с помощью ЦМС буду постоянно дополнять, что ест-но неустроило мое начальство и был дан отказ принять практически готовое мое решение с минимумом "наворотов". Мне дали наводку, что необходимо создать такую программу, что бя я не участвовал в ней более. Соответственно мне надо назначить 1 ответственного человека за ввод данных и что бы программа все делала автоматически и как можно больше без участия человека. Я сделал полный доступ к архиву 1 пользователю, остальным - только чтение..Эта история долгая, я итак много отнял у вас времени и места здесь..
Вот сижу и строю коды на основе имеющихся данных и личного АйКю для познания скриптового языка до нужного уровня.. .
Любая информационная помощь от Вас мне не чужда.

Любители построили Ковчег, а профессионалы - Титаник.

12 (изменено: stir, 2011-01-19 12:54:37)

Re: Сканированные документы архива и Javascript

моя аська, если кому-нибудь нужно пообщаться (я всегда рад общению) - 381-090-890, вроде так.

Любители построили Ковчег, а профессионалы - Титаник.

13

Re: Сканированные документы архива и Javascript

DnsIs, Спасибо за ссылку - http://www.voidtools.com/download.php - обязательно скачаю и протестю...
Rumata, все почти верно, и.. у меня есть некоторые трудности с написанием скриптов по поиску, все остально - по плечу.

За оказанное содействие и поддержку хочу прилюдно поблагодарить разработчика Rumata, особенно за его стремление к минимализму и корректности в написании кодов (зы, я смотрел ваш ресурс - блог, нашел несколько идей увлекательными и верными)

Любители построили Ковчег, а профессионалы - Титаник.

14

Re: Сканированные документы архива и Javascript

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

Посмотрите следующий скрипт. Он содержит некоторые заготовки и пустые блоки. Сейчас он создает простой текстовый файл - список ВСЕХ файлов на системном диске. Время выполнения около 10 секунд (более 146 тыс файлов, более 18.5 тыс каталогов). Дополнительная обработка списка (создание разметки) приведет к падению скорости выполнения. Если скрипт дает результат близкий к искомому, то просто продолжим работать в этом направлении

@echo off

setlocal

set warehouse_src=C:\
set warehouse_out=index.txt

echo %TIME%
call :print_list > %warehouse_out%
echo %TIME%

endlocal
goto :EOF

:print_list
call :print_header
call :print_body
call :print_footer
goto :EOF

:print_header
goto :EOF

:print_body
dir /a-d /s /b "%warehouse_src%"
goto :EOF

:print_footer
goto :EOF
( 2 * b ) || ! ( 2 * b )

15

Re: Сканированные документы архива и Javascript

Спасибо. Очень интересный подход к решению задачи. Несомненно можно через http (jscript) запустить батник на самом сервере, это очень ощутимо сэкономит времени и ресурсов...
Сейчас нахожусь дома, запустил батник, примерно через 12 мин файл был готов. Строк = 127690.
ПК: Intel Celeron D 346, 3066 MHz (23 x 133) + ECS 945GZT-M  (2 PCI, 1 PCI-E x16, 2 DDR2 DIMM, Audio, Video, LAN) + 503 Мб  (DDR2-667 DDR2 SDRAM) + HDS728080PLAT20  (80 Гб, 7200 RPM, Ultra-ATA/133). ***78528 Мб (41581 Мб свободно)***
Завтра подкорректирую путь и запущу его через локалку на чтение с сервера, а после тоже самое но на нем..

Любители построили Ковчег, а профессионалы - Титаник.

16

Re: Сканированные документы архива и Javascript

Нет. Этот скрипт не планируется запускать при каждом обращении к веб-серверу. Предполагается, что он должен запускаться с определенной периодичностью из планировщика задач автоматически или принудительно вручную. Таким образом можно периодически обновлять листинг локально на самом сервере.

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

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

хочу прилюдно поблагодарить

Спасибо за добрые слова. Но как-то неудобно, если честно.

( 2 * b ) || ! ( 2 * b )

17

Re: Сканированные документы архива и Javascript

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

Любители построили Ковчег, а профессионалы - Титаник.

18 (изменено: stir, 2011-01-20 09:10:48)

Re: Сканированные документы архива и Javascript

Вот сравнительные тесты:
с ПК Пользователя в локальной сети - просканирована папка СКАН и записано 401 строка за время = 24 мин.
тоже но на сервере, папка на диске Д - записано строк 401 за 1 мин.

Железо: Сервер = НР МЛ150, райд 1+0 (4*750Гб), проц 1*4 ядра ...
ПК = ECS G41T-M6  (.. DDR3 DIMM, Audio, Video, Gigabit LAN) + 2 Гб DDR3-1333 DDR3 SDRAM  + DualCore Intel Celeron E3200, 2400 MHz (12 x 200) + Hitachi HDS721050CLA362  (500 Гб, 7200 RPM, SATA-II)

@echo off

setlocal

set warehouse_src=\\serverpko\arhiv\scan\
set warehouse_out=index-server-user.txt

echo %TIME%
call :print_list > %warehouse_out%
echo %TIME%

endlocal
goto :EOF

:print_list
TIME /T
call :print_header
call :print_body
call :print_footer
TIME /T
goto :EOF

:print_header
goto :EOF

:print_body
dir /a-d /s /b "%warehouse_src%"
goto :EOF

:print_footer
goto :EOF

Вот кусок тхт файла на выходе:


10:06
D:\arhiv\scan\28000.bat.txt
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_002.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_003.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_004.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_005.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_006.1.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_007.tif


D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.026_026.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.OD.000_001.1.tif
D:\arhiv\scan\25605\25605a\AWW.01.0141_0142.25605.SP.021_001.tif
D:\arhiv\scan\25605\25605a\Thumbs.db
D:\arhiv\scan\25605\25605a\«Ёбв 6-10-Ђ’•.pdf
D:\arhiv\scan\25605\25605a\«Ёбв 6-11-Ђ’•.pdf


D:\arhiv\scan\25605\25605vk\VKW.01.0141_0142.25605.SP.005_005.tif
D:\arhiv\scan\25605\25605vk\VKW.01.0141_0142.25605.txt
10:07

Здесь (впрочем как всегда у меня) не отображаются правильно русские имена файлов и папок - только анг.

Т.к. другого быстрого пути формирования базы в принципе нет (или пока нет), то на этом можно считать модуль формирования базы законченным.

Вопрос - где лучше убрать лишние файлы, нужны пока что - *.tif , а) при создании базы или б) потом (в модуле поиска)  при поиске нужной информации усложнять алгоритм самого поиска?
Путь А) самый рациональный на текущий момент, а путь Б) более гибкий и может пригодиться для модернизированного модуля расширенного поиска в будущем (вдруг потребуется поиск не только по шаблону и не только файлов с расширением *.tif...

Любители построили Ковчег, а профессионалы - Титаник.

19

Re: Сканированные документы архива и Javascript

Я уже описал один из вариантов

1. покажет все файлы и только файлы, расширения которых начинаются на .doc или .txt

dir /b /s /a-d "*.doc" "*.txt"

2. покажет все файлы и только файлы только с расширениями .doc и .txt

dir /b /s /a-d | findstr /r "\.doc$ \.txt$"

Оба примера закрывают Ваш вопрос (варианты и а и б). Судя по моему описанию второй путь более правильный.

Можно оба варианта. Насколько это улучшит производительность - не знаю. Надо просто протестировать на большом объеме данных.

3.

dir /b /s /a-d "*.doc" "*.txt" | findstr /r "\.doc$ \.txt$"

вдруг потребуется поиск не только по шаблону и не только файлов с расширением *.tif

Что значит не по шаблону не понятно. Как еще можно искать файлы? Про другие расширения я уже описал. если надо удалить определенные файлы из результата, вывод просто передается следующей команде findstr /v "что не показывать" по конвейеру - как здесь #3

Вопрос упирается в то, какой язык будет использован для формирования html файла, который будет видеть клиент. Так же встает вопрос веб-сервера. Какими возможностями он будет обладать - будет ли формировать динамические страницы, обрабатывать поисковые запросы пользователей, или это будут простые статические страницы со списком ссылок на файлы для скачивания по протоколу HTTP. Мои тесты говорят, что JScript ужасно медленный язык в сравнении, например, с Perl, Python.

( 2 * b ) || ! ( 2 * b )

20

Re: Сканированные документы архива и Javascript

Я бы всё-таки порекомендовал обратить внимание на совет коллеги DnsIs.

21 (изменено: DnsIs, 2011-01-20 12:42:31)

Re: Сканированные документы архива и Javascript

Влезу ка я пожалуй еще разочек, тем более что в аське вы не отвечаете. Так вот. Я уже писал про программу Everything. Видимо вы отложили ее тес до лучших времен, но читая выше написанные посты, мне кажется что это то, что вам нужно.
Вкратце: Everything, сканирует заданные диски/папки компьютера (по умолчанию все жесткие диски), держит в памяти базу, и сидит в трее, и если ее оттуда вызвать, по появляется окно поиска файлов с таблицей. В окне поиска вы набиваете название файла, и программа в реальном времени заполняет таблицу, БЕЗ всяких тормозов! ПЛЮС КО ВСЕМУ, она мониторит диски/папки и держит базу всегда в актуальном состоянии, причем обновление базы происходит мгновенно! То есть, не нужно постоянно сканировать диски.

Возможен так же поиск по маске и поиск с помощью регулярных выражений.
Встроен FTP + HTTP серверы, то есть можно запустить сервер, в котором будет работать файловый поиск!
Ну что еще надо для счастья?

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

Провел сейчас тест: 208 207 строк, файл 13,6 Мб. за 7,125 сек.

Заметьте. Программа бесплатная!

Нас невозможно сбить с пути, нам пофигу куда идти.

22

Re: Сканированные документы архива и Javascript

Полностью согласен с alexii и DnsIs. Я как-то забыл о том, что DnsIs уже обращал внимание на эту программу. Описание на сайте и собственные тесты подтверждают сказанное. Эта утилита для Вас.

( 2 * b ) || ! ( 2 * b )

23 (изменено: stir, 2011-01-20 13:39:27)

Re: Сканированные документы архива и Javascript

Ура! До меня наконец-то все дошло!!! Спасибо Rumata за терпение, вот что вышло.. и меня полностью устраивает, за исключением того, что это будет делаться на сервере без вмешательства ответственного лица, , ну да ладно - не критично.. и на экране вместо русских подсказок "иероглифы", но цифры то понятны!!!, .

@echo off
echo %TIME%
rem echo "Начато формирование общей базы"
rem dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." > baza100.txt
rem echo "Закончено формирование общей базы"
echo "Начато формирование базы 1"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find  "AWW" > baza101.txt
echo "Закончено формирование базы 1, формируем базу 2"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "ARW" > baza102.txt
echo "Закончено формирование базы 2, формируем базу 3"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "ASW" > baza103.txt 
echo "Закончено формирование базы 3, формируем базу 4"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "EMW" > baza104.txt
echo "Закончено формирование базы 4, формируем базу 5"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "ENW" > baza105.txt
echo "Закончено формирование базы 5, формируем базу 6"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "EOW" > baza106.txt
echo "Закончено формирование базы 6, формируем базу 7"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "ESW" > baza107.txt
echo "Закончено формирование базы 7, формируем базу 8"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "GPW" > baza108.txt
echo "Закончено формирование базы 8, формируем базу 9"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "GSW" >baza109.txt
echo "Закончено формирование базы 9, формируем базу 10"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "KJW"  >baza110.txt
echo "Закончено формирование базы 10, формируем базу 11"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "KMW" > baza111.txt
echo "Закончено формирование базы 11, формируем базу 12"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "KMD" > baza112.txt
echo "Закончено формирование базы 12, формируем базу 13"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "MWW" > baza113.txt
echo "Закончено формирование базы 13, формируем базу 14"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "NKW" > baza114.txt
echo "Закончено формирование базы 14, формируем базу 15"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "NVW" > baza115.txt
echo "Закончено формирование базы 15, формируем базу 16"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "NVK" > baza116.txt
echo "Закончено формирование базы 16, формируем базу 17"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "OSW" > baza117.txt
echo "Закончено формирование базы 17, формируем базу 18"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "OVW" > baza118.txt
echo "Закончено формирование базы 18, формируем базу 19"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "PBW"  > baza119.txt
echo "Закончено формирование базы 19, формируем базу 20"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "PGW" > baza120.txt
echo "Закончено формирование базы 20, формируем базу 21"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "PSW" > baza121.txt
echo "Закончено формирование базы 21, формируем базу 22"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "PTW" > baza122.txt
echo "Закончено формирование базы 22, формируем базу 23"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "SSW"> baza123.txt
echo "Закончено формирование базы 23, формируем базу 24"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "TKW"> baza124.txt
echo "Закончено формирование базы 24, формируем базу 25"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "TSW" > baza125.txt
echo "Закончено формирование базы 25, формируем базу 26"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "TXW" > baza126.txt
echo "Закончено формирование базы 26, формируем базу 27"
dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." | find "VKW" > baza127.txt
echo "Закончено формирование базы 27"

ПС: На формирование 4 баз по этому коду на сервере ушло 5 минут, причем в базе присутствует 1(!) проект из 28000 (!!!, о ужас!), жаль, что Javascript не справился с задачей формирование базы архива (формирование базы обычно я останавливал принудительно через 40 мин или 1 час).

Любители построили Ковчег, а профессионалы - Титаник.

24

Re: Сканированные документы архива и Javascript

Ну чтобы уж окончательно добить эту тему. Это будет работать быстрее

dir "D:\arhiv\scan" /a-d-s /b /s | findstr /r "\.tif$ \.tiff$" | find /v ".SP." | find /v ".OD." > baza_all.txt

find "AWW" baza-all.txt > baza101.txt
find "ARW" baza-all.txt > baza102.txt
...

А на предлагаемую программу Everything все же посмотрите/

( 2 * b ) || ! ( 2 * b )

25

Re: Сканированные документы архива и Javascript

скачал еще вчера, пока не поставил для теста.. но вскоре постараюсь это сделать обязательно!. , еще раз спасибо всем!

Любители построили Ковчег, а профессионалы - Титаник.

26 (изменено: stir, 2011-01-23 11:34:26)

Re: Сканированные документы архива и Javascript

Вот подумал об этом: т.к. яваскрипт неплохо работает на стороне клиента, то поиск будет осуществляться по уже сформированным (см. выше) базам и будет логично, чтобы при заходе на страницу с поиском эти базы загружались, а при покидании ресурса (локального сайта) эти базы автоматически удалялись. Пока еще не опробовал, но наверное сделаю так:
для страницы с поиском - <body onload="Load()" onunload="Exit()">
для главной - <body onunload="Exit()">

<script type="text/javascript">
<!--
name6 = "\u005C\u005Cserverpko\u005Carhiv\u005Cbaza" // взято из data.js
name7 = "c:\\Temp-pko" // взято из data.js
function Load() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(name6);
f.Copy(name7);
}
-->
</script>


<script type="text/javascript">
<!--
name7 = "c:\\Temp-pko" // взято из data.js
function Exit() {
    exit=true;
    if (exit) {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var f = fso.GetFolder(name7);
        f.Delete(true);
    }
}
-->
</script>
Любители построили Ковчег, а профессионалы - Титаник.