RuLib

Новости Главная Каталог книг Статьи Загрузка Карта сайта

 

AddTextAnn
AddTextAnn - добавляет текстовые аннотаций книг в файлы-описатели (*.SpaceLib.html). AddTextAnn предназначена для создание распределенных поисковых сервисов, способных искать книги как в пиринговых сетях, так и на www. (Скачать ...)

AddTextAnn - добавляет текстовые аннотаций книг в файлы-описатели (*.SpaceLib.html). AddTextAnn предназначена для создание распределенных поисковых сервисов, способных искать книги как в пиринговых сетях, так и на www.

AddTextAnn - добавляет текстовые аннотаций книг в файлы-описатели (*.SpaceLib.html)

   Алгоритм работы программы очень прост, и умещается в несколько сот строк кода.  На первом этапе программа составляет список всех доступных файлов с аннотациями книг, а потом их добавляет к файлам описателям *.SpaceLib.html, Если в процессе работы выяснится, что на данный файл в www существует прямая http ссылка, то она будет также добавлена в файл описатель. Предположим, вас заинтересовала теория большого взрыва. После обзора www ресурсов у вас появились первое и несколько поверхностное представление по данному вопросу. Более глубокие знания, как показывает опыт, содержатся в монографиях посвященных исключительно заданной теме. Попробуем их найти. Заходим на книжный поисковик http://dc-poisk.no-ip.org:17000/ и ищем книги по теории Большого Взрыва.

поиск книг

Мы заинтересвались теорией "Большого Взрыва" и решили найти книги по этой теме.

Ключевые слова не присутствуют в названии файла!

Ключевые слова запроса не содержатся в названии книги, но благодаря аннотации данная книга была найдена.

   Задача AddTextAnn состоит не только в том, что бы дать возможность искать книги по содержанию или аннотации, но и наполнить файл-описатель книги максимальным числом источников для ее скачки.

В файле описателя собирается вся доступная информация о книге

В файле описателя собирается вся доступная информация о книге. В том числе и источники для скачки.


Таким образом, после работы программы, вы получите набор html файлов, в каждом  из которых содержатся:

 Хэш файла-книги и его размер
 магнет ссылки на описываемый файл-книгу в пиринговых сетях
 http ссылки на файл-книгу в web
 различные названия файла-книги, данные ей самими пользователями пиринговых сетей
 каноническое название книги, если оно существует
 текстовую аннотацию файла-книги, которая представляет собой обычно 10 страниц текста с начала и 5 с конца книги (возможно добавление всего текста книги).

  Html файлы-описатели(*.SpaceLib.html) книг-файлов (*.pdf или *.djvu)  можно очень легко проиндексировать любой поисковой системой. Таким образом, вы получаете механизм индексации неограниченного количества файлов-книг, причем поиск будет возможен, не только по названию книги, но и по содержанию. Т.к. html файл это простейший универсальный контейнер, то вы имеете возможность добавлять в файлы-описатели все, что ваша душа пожелает и сможет отобразить ваш браузер.

Создание и заполнение файлов-описателей.
AddTextAnn - является последним звеном в механизме создания книжного поискового сервиса. Для работы AddTextAnn необходимы аннотации книг, их получают с помощью программы FindISBN (http://rulib.narod.ru/findisbn.html). В процессе  работы FindISBN создает файлы сателлиты конкретного файла-книги, например: http://rulib.narod.ru/fridman.html . Набор таких файлов для конкретной книги и есть ее аннотация. Именно эти аннотации и добавляются в файлы-описатели *.SpaceLib.html, которые в свою очередь должны быть созданы с помощью SSearch  (http://spacelib.narod.ru/p_ssearch_adv.html) на закладке "турбо-поиск". В режиме "турбо-поиск" можно тремя различными способами создавать html файлы описатели (*.SpaceLib.html). Самым универсальным является "Выполнить задание на созд. *.html для сайта поиск. сист." см. рисунок.

SSearch - создание файлов-аннтоций
Выбирайте удобный вам способ создания файлов аннотаций.

Самым универсальным является «Выполнить задание на созд. *.html для сайта поиск. сист.»
Один раз, настроив пакетное задание, впоследствии вы сможете выполнить его, сделав два щелчка мышью.

 В этом режиме, файл-листы пользователей (*.xml.bz2), скачанные пиринговым клиентом (StrongDC) сразу превращаются в файлы-описатели *.SpaceLib.html. Но важно правильно указать некоторые параметры в файле-задании (по умолчанию deftask.ini). Приведем простой пример файла задания:

;******************** BOOKS ************************
; имя задания
[BOOKS]
; Flag - признак выполнения 1 - выполнен, 0 - необходимо выполнить
Flag=0
; Папка со списками файлов пользователей
FileLists=D:\SSearch глобал\FileLists
; Пака, где будем сохранять отобранные файлы. Такие файлы
; хранятся в файлах ник-пользователя.CID.xml.Find
; если папки не существует, она будет создана
; если папка существует, и в ней есть файлы, они будут удалены
DirOut=D:\SSearch глобал\BOOKS_Find
;расширения файлов, которые должны быть отобраны, перечисляются через ;
; пустое значение - все файлы будут отобраны
Exts=djvu;djv;rtf;doc;ps;txt;text;htm;html;chm;pdf;
; Поисковое выражение для отбора файлов. См. язык запросов
; пустое значение - все файлы будут отобраны
Search=

; FilterSize=Любой-0, Больше-1, Меньше-2, С.. По..-3
FilterSize=0
; SizeBegin=размер файлов в байтах,
; при FilterSize=1 будут ост. файлы с размером большим SizeBegin
; или FilterSize=2 будут ост. файлы с размером меньшим SizeBegin
SizeBegin=
; SizeEnd=размер файлов в байтах, при FilterSize=3,  SizeEnd это значение "ПО"
SizeEnd=

; Признак необходимости оптимизации файлов ник-пользователя.CID.xml.Find
; при оптимизации файлы с одинаковыми Никами но разными CID объединяются
; необходимо, когда файл-листы скачиваются с разных хабов
; 1- оптимизировать, 0 - нет.
Optim=1

; Признак необходимости конвертации файлов *.html, 0-не выполнять
FlagHtml =1
HtmlDir=i:\books
; Полное имя файла <шапки> для *.html файлов (пустое значение - без шапки)
Shapka=D:\SSearch глобал\dizain-html\Shapka-book.html
; Полное имя файла <подвала> для *.html файлов (пустое значение - без подвала)
Podval=D:\SSearch глобал\dizain-html\Podval-book.html
; Путь к файлам, отображающим активность пользователей
PathToSiteUser=http://dc-poisk.no-ip.org:17000/hl/?url=ftds/I:/big/user/

 Для  SSearch Html файлы-описатели(*.SpaceLib.html) состоят из трех частей:
   1. Шапки html файла, параметр - Shapka;
   2. Содержательной части (хэш файла, размер, варианты названия файла, которые дают им пользователи, магнет-ссылки), её создает SSearch в процессе работы;
   3. Подвала html файла, параметр - Podval.

Если ваш сайт будет иметь фреймовую структуру, возможно ни шапка, ни подвал в явном виде вам не понадобятся. Однако, AddTextAnn будет нужно знать место в *.SpaceLib.html файлах куда добавлять аннотации книг. Для этого, я в файл подвала помещаю текстовый ключ в виде комментариев, который и будет в последствии заменён аннотацией.
  Параметр PathToSiteUser описывает место и способ извлечения файлов двух типов: "ник-пользователя.gif" и "ник-пользователя.html". Например: MR_T.gif, MR_T.html,  где MR_T это ник пользователя. В файле *.gif должен быть графический рисунок отображающий активность данного пользователя в пиринговой сети. Я создаю  красный квадрат, если пользователь отсутствует,  зеленый, если он на одном из известных мне хабов. В "файле ник-пользователя.html" хранится статистика об активности пользователя на хабах (когда, где и сколько времени был данный источник), кроме того там же даются прямые ссылки на поиск его в других сервисах (http://www.publichublist.nl/ или http://www.dchublist.com/). Но! Т.к. я не имею устойчивого и достаточно широкого канала, работа моей системы мониторинга юзеров хабов не удовлетворительна. Приемлемые результаты я получал только для хабов, расположенных во внутренней сети моего провайдера. В моем случае "http://dc-poisk.no-ip.org:17000/hl/?url=ftds/I:/big/user/" это "просьба" к http Яндекс-серверу извлечь из файловой системы один из файлов *.gif или *.html. Если вы сможете создать свою систему мониторинга активности пользователей хаба, PathToSiteUser будет иметь другое значение. Например, вызов  скрипта на стороне сервера, который из базы данных, а не из файловой системы будет извлекать данные и налету создавать необходимые файлы. Если задуматься сделать это совершенно не сложно, ведь пиринговые клиенты уже хранят во внутренних структурах памяти (или БД) всю необходимую информацию. Остается только её оттуда извлечь и сохранить или в файловой системе, или  в своей базе данных.
 
 Кроме магнет-ссылок на файлы расположенные в пиринговой сети, AddTextAnn может добавлять и ссылки на файлы расположенные на http серверах. В данное время самой большой, ценной и доступной "библиотекой - интегратором" является Library Genesis (http://gen.lib.rus.ec/). Ее механизм скачки файлов демократичен и универсален. На стороне "Library Genesis" есть скрипт, который по md5-хэшу книги дает возможность скачивать сам файл-книгу используя только браузер. Такой же механизм используют и пиринговые сети. Т.к. движок сайта Library Genesis открыт и доступен (Code - http://gen.lib.rus.ec/files/gen.lib.rus.ec_v17_dist.7z, Dump -БД ), вы его можете скачать и установить на своем компьютере, став одним из зеркал одной из лучшей он-лайн библиотеки. На странице http://gen.lib.rus.ec/ есть ссылка на базу данных библиотеки, которая нужна для работы AddTextAnn. Раньше эта БД была представлена в *.csv файлом, а сейчас дампом (Dump)  и по некоторым причинам xlsx файлом *.xlsx.rar). Для его преобразования в *.csv файл вам потребуется конвертер. Я использую триальный http://www.softinterface.com/Convert-XLS/Convert-XLS.htm, но возможно есть, что то и лучше, благо он мне требуется не часто. Если вам не хочется самим конвертировать xlsx файл, вы можете скачать его со страницы загрузки (временная ссылка: http://narod.ru/disk/12915775000/lg-csv.rar.html).

Индексация файлов-описателей.

    Теперь о том, как и чем индексировать файлы-описатели (*.SpaceLib.html). Пока я ориентируюсь на Яндекс-сервер (http://company.yandex.ru/technology/server/). Его легко установить, настроить и использовать, а язык запросов широко известен. Кратко опишем процесс установки Yandex_Server-3.10.9-ENT-Windows-i386. Скачайте архив сервера, распакуйте в нужной папке, ознакомьтесь с документацией, представленной в файле  "\data\yandex-server-manual.pdf". Измените  некоторые параметры файла конфигурации сервера на свои. Мой вариант файла конфигурации - yandex.cfg, очень прост:

### Секция Server ###
<Server>
   IPAddress  192.168.1.X
   Port 17000
   Host dc-poisk.no-ip.org
  Threads 5
  QueueSize 0
  ServerLog  yandex.log
</Server>
<Collection>
  ### Настройка индексирующей части Яндекс.Сервера ###
   IndexDir workindex
   TempDir  newindex
   StopWordFile stopword.lst
   GlobalOptions  Update StoreArchive AnalyseWordFreqs  StoreIndexingDate
   PortionDocCount 100000

 <DataSrc id="ftds">
  <Ftds>
    <Folder>
       # в папке i:\books хранятря файлы-описатели
      Path i:\books
   </Folder>
   <Extensions>
     text/html: .html .htm .shtml
   </Extensions>
  </Ftds>
 </DataSrc>

  <DocFormat>
    MimeType  text/html
    Extensions  .html .htm .shtml
  </DocFormat>
  <IndexLog>
      FileName       dsmysql.log
      Level    Verbose     
  </IndexLog>

  QueryCharset windows-1251
 <QueryCache>
     Dir : cache
     LifeTime : 0
 </QueryCache>
  SearchOver Booooooks
</Collection>

 Единственный параметр, значение которого по умолчанию вызвало проблемы, при индексации миллионов файлов, это PortionDocCount. Установите его значение в 100000 (http://bgarkushin.ya.ru/replies.xml?item_no=1010).  На машине где, установлен поисковый сервер в строке url браузера напишите:

http://localhost:17000/admin

  Вы попадете на административную страницу яндекс-сервера.

административная страница яндекс-сервера

 Что бы поиск стал возможен, запустите индексатор кнопкой "i". Только после окончания процесса индексации, появится возможность запустить поиск - кнопка "s"Все - книжный поисковый сервис работает.
 Ниже приведен пример простой HTML-формы, которую вы можете разместить на страницах вашего Веб-сервера для ввода данных для поиска:
  <!-- форма поиска -->
  <form name="search" method="get" action="http://dc-poisk.no-ip.org:17000/">
  <b>Поиск:</b><br>
  <input size="15" name="text" value="" maxlength="200">
  <input type="submit" value=" Найти ">
  </form>

Поиск книг:

   Почему Яндекс? Ответы можно найти в новостях от 30.08.09 . К тому, что там написано, добавлю, что Яндекс-сервер поддерживает режим метапоиска, в котором запрос выполняется разными серверами, а потом объединяется и выдается пользователю в интегрированном виде.
  Пример конфигурационного файла метапоисковых источников:

<Collection>
IndexDir : mainindex
...
<SearchSource>
IndexDir : index1
</SearchSource>
<SearchSource>
IndexDir : index2
</SearchSource>
...
<SearchSource>
CgiSearchPrefix : http://searcher1:17000/source
</SearchSource>
<SearchSource>
CgiSearchPrefix : http://searcher2:17000/source
</SearchSource>
...
MetaSearchOptions : ...
<QueryCache>
Dir : cache
...
</QueryCache>
<SearchPageTemplate>
...
</SearchPageTemplate>
</Collection>

 Конечно многие открытые поисковики тоже способны обрабатывать запрос распределено (1.2. Sphinx features -"provides distributed searching capabilities"). Но в Яндексе декларирует, что ядро Yandex_Server-3.10.9-ENT-Windows-i386, ни чем не отличается от Большого Яндекса, а если это так, то масштабируемость решения на основе Яндекс-сервера должна быть "огромной" и зависеть только от ваших аппаратных ресурсов.

Дата-центр Яндекса
Дата-центр Яндекса. Впечатляет?

   Но каким бы не были большими аппаратные ресурсы Яндекса, они окажутся несравнимо меньшими, чем объединенные аппаратные ресурсы популярных пиринговых сетей. Так, только на одном хабе Cifra&Ozerki - Super DC Hub (dchub://dc.ozerki.net) в зависимости от времени суток может одновременно находиться от 6000 до 14000 юзеров, расшаривающих до 1800 Тбайт файлов . Программа-клиент одного пользователя обычно отвечает за 1 сек. на 2-4 запроса, т.е. от 170000 до 350000 запросов в сутки, а Яндекс исполняет около 1000000 запросов в сутки. От 17 до 35 процентов от результата Яндекса и только на одном хабе! Хотелось бы особо отметить тот факт, что пользователи пиринговой сети Direct Connect не только отдают свои исходящие каналы и  дисковое пространство, но и тратят своё процессорное время на поиск файлов для других участников P2P-сети, образуя распределенный центр хранения данных - народный дата-центр. Единственный недостаток таких народных дата-центров это отсутствие функции поиска по содержанию расшаренных файлов, использующей развитый язык запросов. Т.е. революция в P2P-сетях наступит тогда, когда программы-клиенты  получат функциональность хотя бы открытого Сфинкса, для выполнения поисковых запросов пользователей P2P-сетей. Проще говоря, программы-клинты пиринговых сетей должны интегрировать в себе функциональность современных персональных поисковых систем, способных извлекать информацию из множества форматов файлов и предоставляющих пользователю широчайшие возможности поиска по их содержанию.
  А теперь, после долгой преамбулы, я готов ответить на вопрос: "Почему данные о файле-книге хранятся не в базе данных, а в файловой системе в виде файлов-описателей?". Если внимательно  прочитать (http://rulib.narod.ru/news.html) многое станет ясно. Основной мотив, точно такой же, как и у архитекторов Гугла. Ни одна база данных не может легко хранить и обрабатывать терабайты или петабайты данных. А вот файловые системы могут уже сейчас, делают это бесплатно и способны быть распределенными.

Перспективы.

 В ближайших планах:
 добавить возможность просмотра нескольких страниц книги в виде html файлов с картинками (получаются новой версией FineReaderToTxt (23.06.09 http://spacelib.narod.ru/p_frtotxt.html)). Сейчас идет процесс их создания;
  добавить "обложки книг" - изображения нескольких страниц файла-книги;
  Для Яндекс-сервера любой документ может быть разбит на зоны и описан с помощью атрибутов. Такие атрибуты могут быть, как документальными - относящимися ко всему документу (Автор: "Пушкин А.С.", Дата создания: "1831", Название: "Евгений Онеги", Жанр: "Роман", ISBN: "5-93898-030-5", Страниц: "701", хэши файлов: "ADMTX6DZY5V5ZVZ2W3BWNH7LGYXAVM4PO4JEEIA, DRIRNUEOFRDZZFLLAANIOBRYE2EACX2FDORL2LA, HZ7YG72KPYFFAYMXCR5DFLKI53DLVZNOCG4WIRI"), так и зональными ( Глава: "1", Дата создания: "1823") - относящиеся к определенной части документа. Соответственно и поиск возможен как по зонам, так и по атрибутам. Кроме того, существуют еще и группировочные атрибуты, т.е. те, которые позволяют группировать найденные документы в зависимости от ваших желаний. Например, найденные документы можно сгруппировать по издательствам, сериям, авторам, значениям классификаторов УДК или ББК, формам: книга - журнал - статья - руководство. Естественно по всем атрибутам документа возможен целенаправленный поиск. Описание документов с помощью механизма атрибутов и есть дальнейшее направление развития, как AddTextAnn так и других моих программ: FindISBN, FindAName.

Заключение.

 SSearch можно использовать не только для создания книжных поисковиков, но и любых других. Файлы описатели *.SpaceLib.html это универсальные html контейнеры, которые  заполняются программно. В случае файлов-книг наполнение содержанием файлов-описателей берет на себя FindISBN. Если вы захотите описать видео-файл вам потребуется написать другую программу, которая анализируя видео, сможет:    

 извлекать наиболее представительные кадры из видеоряда;
 распознавать и превращать в текст аудио-дорожку фильма;
 находить и с помощью программ OCR распознавать титры фильма;
 анализируя содержание распознанной аудио-дорожки, титров и доступные названия файла        извлекать из книжных энциклопедий подробную аннотацию фильма (если видео-файл конечно фильм);
 извлекать из видеоряда изображения лиц, находить наиболее часто встречающиеся в данном видео-файле, распознавать и искать о них информацию в актерских энциклопедиях;
  по косвенным признакам делать классификацию видео (фильм, новостной сюжет, интервью, видеоклип и т.п.).

   Но конечно, написать такую программу дело не тривиальное и по силам далеко не каждому, да и домашнему ПК такая задача не по зубам, вам потребуется супер-компьютер :). В случае же книг, журналов или статей все несколько проще - FindISBN уже существует.
Российский супер-компьютер Скиф (проект), другое название Аврора
Были бы в России супер-компьютеры, а задачи для них мы найдем.

dc-poisk.no-ip.org:17000 - поиск книг в пиринговых сетях и на www по библиографии и содержанию. Рассмативается как народная распределенная альтернатива проприетарному поиску от books.google.ru
dc-poisk.no-ip.org - поиск файлов в пиринговой сети Direct Connect. Один из самый больших поисковиков в пиринговой сети DC.
http://gen.lib.rus.ec/ - Очень большая научно-техническая www библиотека
Library Genesis. Самый простой способ найти и скачать книгу.

 

Новости Главная

Каталог книг

Статьи

Загрузка Карта сайта
Сайт управляется системой uCoz