The FTPSearch/Agent system  
 [новости]  [описание]  [установка]  [скачать]  [пример]  [обратная связь]  [switch to english]
Описание работы пакета FTPSearch/Agent: 

  SourceForge.net Logo   
Пакет FTPSearch/Agent выполняет задачу поиска файлов на FTP серверах в малых и средних локальных сетях (Количество серверов, принимающих участие в поиске ограничено главным образом производительностью сервера MySQL. На данный момент цифра максимального количества серверов, по которым проводился поиск во время тестов, составляло 176 одновременно.)

К особеностям программного пакета можно отнести:

Пакет поиска FTPSearch/Agent состоит из трёх частей: программы-индексатора Agent (агент индексирования), написанного на Java, web интерфейса к поиску, написанного на PHP и базы данных ссылок, роль которой выполняет MySQL. Нумерация версии пакета производится следующим образом: три числа, разделённые точками. Первое число - общая версия пакета (сечас вторая), второе число - версия агента индексирования, третье число - версия Web интерфейса. Иллюстрацию работы WEB интерфейса вы можете посмотреть на страничке [пример] - данная иллюстрация была создана из результатов реальной работы FTP поиска.

Программа Agent должна работать постоянно. Логически она состоит из двух частей: сканера статуса online-offline и индексатора. Каждый сервер, внесённый в базу данных поиска, агент индексирует раз в восемь часов. К индексируемому содержимому отностся структура файлов и директорий сервера, а так же небольшие (до 8 килобайт) файлы с расширениями .txt .diz .nfo

Файлы, скаченные в режиме индексирования используются в дальнейшем для ассоциативного поиска. Для этого скаченый файл подготавливается: в содержимом файле остаются лишь символы алфавита - все спецсимволы, арифметический символы и знаки препинания, а так же цифры заменяются пробелами, а из полученных слов удаляются те, что имеют длину меньше 4х символов. Полученный текст, состоящий из слов от 4х символов длиной ставится в соответствие к названиею директории, в которой он лежит, и двух её родительских (с разной степенью силы ассоциаций). При поиске, после выдачи ссылок с прямым совпадением с запросом по имени директории и файлов, программа ищет самые сильные ассоциации, потом менее сильные, а в конце - самые слабые. Ассоциации ищутся по этому же запросу в приготовленных из скачанных файлов текстах. Далее найденные названия директорий используются в качестве новых ключей поиска.

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

Первый пример: по запросу "Game" поисковая система в асссоциативном режиме находит директорию "/SETUP/CS/mod_-_half" благодаря тому, что в директории "/дистрибутвы/игры/Half" совсем не на данном сервере лежит файл "Readme.txt" содержащий (в оригинале) слова "This game...". Данный файл привязывает с высокой степенью ассоциации слово "game" к слову "Half", с меньшей степенью ассоциации к слову "игры" и с минимальной степенью ассоциации к слову "дистрибутивы".

Второй пример, как демонстрация низкой релевантности: по данному же запросу, но уже в конце найденого находится результат "/Programming/Java-doc/j2sdk-docs/api/javax/imageio/event". Какими путями он туда попал можно понять, лишь просмотрев список ассоциаций системы по слову "Game": среди ассоциаций "Need For Speed - 5"/"АвтоМото"/"Games" (по степени ассоциации в порядке убывания), встретилась и такая: "event"/"CS-1.6.2"/"Games" по которой и была найдена эта ссылка.

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

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

Каждую учётную запись механизм поиска проверяет раз в 5-30 минут, пока не будет достигнуто соединение. После того, как индексация проведена, следующая попытка подключения производится не ранее, чем через 8 часов. Если за последние 15 суток поиск ни разу не сумел подключиться к серверу по учётной записи, то такая запись удаляется. В случае прерывания связи, через 15 минут будет предпринята попытка доиндексировать сервер.

Ограничения:

Так-как изначально поиск был ориентирован прежде всего на пользователей Windows, то могут встречатся проблемы с поддержкой кириллических текстов в кодировке, отличной от cp-1251. По умолчанию тексты файлов с расширением .txt и названия файлов сохраняются в оригинальной кодировке, но для файлов с расширениями .nfo и .diz ситуация иная: программа по умолчанию считает, что в них содержится латинский текст либо текст в DOS кодировке и перед сохранением в БД конвертирует файлы в cp-1251 (соответственно, если в таких файлах содержался не-кириллический текст или кириллица не в DOS кодировке, то сохранённый поиском текст будет испорчен). Так же для русскоязычного поиска нужно, чтобы MySQL поддерживала кодировку по умолчанию (cp-1251).

Для использования данного пакета на системах, где русская кодировка отличается от cp-1251 или используются какие-либо другие начертания символов вам нужно самостоятельно доработать программу. Для этого смените языковой модуль в web интерфейсе и сконфигурируйте MySQL для работы с нужной вам кодировкой.

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

Дополнительную информацию о работе Агента можно узнать здесь: Agent.java.html

(c) 2003, Konstantin Andrunin