Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Perl] Поисково-справочные системы 
:(
    Опции темы
Nab
Дата 25.3.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Цитата(MDM @  25.3.2007,  00:56 Найти цитируемый пост)
Сегодня я обсудил этот вопрос со своим руководителем, обяснил ему, что название курсовой неправильно. Выяснил в чем состоит моя задача, поконкретней. Итого: моя тема теперь называется "Поисковые системы". Задача: мне нужно сделать поисковик, самый простой, для эл. библиотеки. Неважно, я сам его напишу, или воспользуюсь готовым кодом, главное результат. Поиск будет производится по содержанию книг, авторам, названиям... Ещё нужна теория, на страниц 30...

MDM, если дело именно так обстоит, то думаю лучше всего обойтись внешним поисковиком...
Тут в большей степени играет роль, какова структура вашей библиотеки. И она публична, то есть доступна из инета?
Может сразу URL подкинете...

По поводу теории, то надо не готовый искать, а скорее всего прийдется потрудиться и скомпилировать из разных статей, потому как поисковые системы сильно меняются, и каждый свою хвалит smile


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
nitr
Дата 25.3.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Nab, я знаю твою теорию по поисковикам smile и полностью поддерживаю, но думаю, что автору данного поста нужен Курсовик smile , а их в инете оооочень много, думаю руководитель будет требовать разъяснить ВСЁ smile и как поиск и что за поиск и т.д. и т.п. Имхо ему писать САМОМУ самый простой, и указать что есть более мощные и с морфологией к примеру, и т.д.

Короче, гугль smile и статьи (ссылки давали все). Перл - реализация, не надо к данному подфоруму прикручивать!

Цитата(Nab @  25.3.2007,  08:25 Найти цитируемый пост)
Может сразу URL подкинете...

Это ж курсовик ;)


--------------------
PM   Вверх
Nab
Дата 25.3.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Цитата(nitr @  25.3.2007,  13:01 Найти цитируемый пост)
Это ж курсовик ;)

Ха, в том то и дело, что уже не просто курсовик smile ему по любому прийдется реализацию сделать... и перл тут по большому счету ни при чем, просто как один из вариантов...
Под внешней системой я больше имел ввиду сервисы предоставляемые грандами типа Google но лучше Яндекс для поиска по конкретному сайту, и только по нему... Это самый простой и надежный способ, хотя и не очень эффективный... потому как они долго индексировать сайт ваш будут... 
А вообще опять же вариантов море, и лучше исходить из текущего состояния сырого материала, который нужно проиндексировать и упорядочить...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
MDM
Дата 26.3.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Теорию можно можно взять из других курсовиков! Но код я сам должен написать, или хотя бы суметь им обяснить его алгоритм, и разобрать каждый фрагмент кода.
http://ktims.kbsu.ru/ - на этом сайте я буду делать поисковик! Это сайт-болванка, его, можно сказать, собрали такие новички, как и я! Зато научились! Там видно кнопку поиск, вот её я и должен заставить работать!
Мне ещё придется этот код на сервак самому поставить, поэтому я и спрашивал, как связать формы HTML и Perl... 
Nab, внешний поисковик отпадает, потому что кода не видно... 
В последствии этот поисковик будет модернизироваться... мне так сказали, но мне все-равно, лишь курсовик сдать! Хотя вполне возможно, что мне придётся его доделовать, я не против,... пока интерес есть!...
Ещё один ньюанс: сервер слабый. Этот поисковик не должен его сильно нагружать... Хотя, думаю что с таким сайтом его сильно и не нагрузят... smile 

Это сообщение отредактировал(а) MDM - 26.3.2007, 15:09
PM ICQ Skype   Вверх
Str!pe
Дата 31.3.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


профиль удален
****


Профиль
Группа: Участник
Сообщений: 2426
Регистрация: 12.6.2005
Где: На земле.

Репутация: нет
Всего: 152



Цитата(MDM @  25.3.2007,  00:56 Найти цитируемый пост)
что преподователям нужная поисковая система на нашем сайте, но они не знают как её сделат

Так качни и привинти ее им smile Скриптов то хватает тут, сам не использовал, не знаю, учусь так же как и ты smile


--------------------
Со мной можно связаться по скайпу или по аське.
Занимаюсь продвижением сайтов - самой таргетированной рекламой.
PM MAIL ICQ Skype   Вверх
MDM
Дата 1.4.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Спасибо Str!peВсем вам спасибо!
...
Осталось только "привинтить"!
Ещё один скриптик нашел в интернете http://www.codenet.ru/webmast/search/newbee/, только он вроде на PHP, зато теорию можно использовать...
PM ICQ Skype   Вверх
tishaishii
Дата 2.4.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



smile)
Ну БД mysql с полнотекстовыми индексами и баста!
PM MAIL ICQ Skype   Вверх
Str!pe
Дата 2.4.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


профиль удален
****


Профиль
Группа: Участник
Сообщений: 2426
Регистрация: 12.6.2005
Где: На земле.

Репутация: нет
Всего: 152



MDM
Лучше вместо спасибо, как напишешь, выложи в тему итоги работы smile Напиши статью, интересно будет почитать smile

Это сообщение отредактировал(а) Str!pe - 11.4.2007, 23:54


--------------------
Со мной можно связаться по скайпу или по аське.
Занимаюсь продвижением сайтов - самой таргетированной рекламой.
PM MAIL ICQ Skype   Вверх
MDM
Дата 4.4.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Цитата

Лучше вместо спасибо, ка кнапишешь, выложи в тему итоги работы  Напиши статью, интересно будет почитать 


Это само собой! Правда, не думаю, что там будет что-то путёвое... Но со временем, надеюсь, как научусь, доработаю....
PM ICQ Skype   Вверх
GoDleSS
Дата 6.4.2007, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 11.2.2007
Где: Пироговский

Репутация: 2
Всего: 2



Эхх, народ, развели флуда, а по делу помогли мало smile

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


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

И так для начала немного теории:
Существуют поисковые системы внутрисайтовые, которые генерируют индексы(индекс - результат анализа текста, по готорому удаляется все лишнее и остается лишь то содержание, что минимально необходимо для грамотного поиска, это позвояет значительно ускорить обработку запросов) читая файлы вывода или данные из базы данных, которую использует сайт.
Состоит, как правило, такой механизм из 2-х частей:
 1. Анализатор файлов/данных БД, который состовляет индекс.
 2. Непосредственно поисковик, ищущий совпадения запроса и содержания индекса.
  + подсистема вывода результатов(иногда бывают навороченные - с сортировками, с выделением найденного в тексте и т.д.)

А так же интересны для вашей темы поисковые системы внешние, состоят из:
 1. Системы, делающей внешний запрос документа, используя tcp подключение:
  1.1 Подсистемы, вытягивающей из сурса страницы, урлы. Сохраняет их в БД.
  1.2 Подсистемы, вытягивающей из сурса нужный текст.
  1.3 Построитель индексов на основе текста. Сохраняет индексы в БД.
 2. Непосредственно анализатора индексов(или поисковика). В грамотной реализации очень много всего написано, но тут уж лучше не меня слушать, а хорошую статью прочитать.

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

Хорош ли выбор языка perl для реализации? Да, выбор достойный.

Давайте попробуем что-нибудь написать. Модель делаю упрощенной, т.к. ни изучать сейчас мануалы, ни долго думать времени нет.

Для начала упрощенный внутренний поисковик по обычным HTML-ам. С кодировками и сложными комментариями разбираться не буду. Будем считать, что сложных комментов нет и работает все в cp1251.

Пусть есть несколько HTML документов. Приводить примеры не стоит - открываем любой сурс и смотрим.

Код формы запроса:
Код

<form method="POST" action="cgi-bin/search.pl" target="_blank">
<input type="text" name="keywords" id="kwfield" value="запрос" onClick="document.getElementById('kwfield').value=''"/> <input type="submit" value=" go "/>
</form>


Код индексера:
Код

#!/usr/bin/perl
# Используем локаль для нормальной обработки русского текста в шаблонах
use locale;

# Описываем глобальные данные
my %Data;        # Хэш данных индекса
# Переменные
my $WorkDir='../';        # Дирректория, которую "грабим"
my $DBF='./index.dbf';    # Файл, в который заливаем данные
my $DBFSplit="\t";        # Разделитель полей файла данных

# Открываем $WorkDir дирректорию и читаем оттуда все .html, .shtm, .shtml, .htm файлы в массив @Files
opendir(SD, $WorkDir);
    my @Files = grep(/.+\.s?html?$/i, readdir(SD));
closedir(SD);

# Описываем переменную, которая будет временно содержать сурс ХТМЛки
my $Source;

# Открываем файл-базу на запись и лочим его на монопольный доступ дабы структуру не нарушить
open(DBF, ">$DBF");
flock(DBF, 2);
    # Печатаем заголовок файла
    print DBF join($DBFSplit, qw(FILE TITLE BODY)), "\n";
    # Перебираем файлы по циклу, текущий файл бросается в переменную $file
    foreach my $file(@Files) {
        # Сохраняем текущий файл в хэше с используемой дирректорией
        $Data{'FILE'}=$WorkDir.$file;

        # Сохраняемвстроенную переменную $/(определяет разделитель строк файла) и обнуляем ее, чтобы читать из файла в строку
        $_=$/;
        $/=undef;

        # Открываем текущий файл на чтение и считываем содержимое в $Source
        open(CF, $Data{'FILE'});
            $Source=<CF>;
        close(CF);
        # Восстанавливаем $/
        $/=$_;

        # Удаляем символы, относящиеся к переносу строк и укорачиваем "длинные" пробелы/таббуляции
        $Source=~s/[\r\n]/ /gs;
        $Source=~s/[\s\t]{2,}/ /g;

        # Уничтожаем заголовок и кидаем его в $Data{'TITLE'}, убираем из $Data{'TITLE'} символ - разделитель полей базы
        $Source=~s/<\s?title\s?>(.+?)<\s?\/\s?title\s?>//i;
        $Data{'TITLE'}=$1;
        $Data{'TITLE'}=~s/\Q$DBFSplit/ /g;

    #    $Source=~s/<meta[^>]+content\s?=\s?["']?[a-z]+\/[a-z]+;\s?charset\s?=\s?([a-z0-9\-]*)["' ][^>]*>//i;
    #    $Data{'CHARSET'}=$1;
    #    unless ($Data{'CHARSET'}) { $Data{'CHARSET'}='windows-1251'; }

        # Уничтожаем тело документа и кидаем его в $Data{'BODY'}
        $Source=~s/<\s?body>(.+?)<\s?\/\s?body\s?>//i;
        $Data{'BODY'}=$1;

        # Обнуляем $Source
        $Source=undef;

        # Режем таги, хтмл-коды, не слова(+ оставляем цифры и "-")
        $Data{'BODY'}=~s/<[^>]*>/ /g;
        $Data{'BODY'}=~s/&#?[a-z0-9]+;/ /g;
        $Data{'BODY'}=~s/[^\w\-0-9]+/ /g;

        # Режем слова короче 3-х символов, убираем "длинные" отступы, удаляем пробелы в начале и конце строки данных
        $Data{'BODY'}=~s/^|\s[\w\-0-9]{1,3}\s|$/ /ig;
        $Data{'BODY'}=~s/\s{2,}/ /g;
        $Data{'BODY'}=~s/^\s//;
        $Data{'BODY'}=~s/\s$//;

        # Объеденяем элементы хэша по разделителю $DBFSplit и записываем в базу, переносим строку
        print DBF join($DBFSplit, ($Data{'FILE'}, $Data{'TITLE'}, $Data{'BODY'})), "\n";
    }
# Закрываем файл-базу
close(DBF);

# Выводим заголовок и данные индексации папки
print "Content-type:text/plain;Charset:windows-1251;\n\nИндексация успешно завершена!\nВсего HTML файлов - ", scalar(@Files), "\nСписок:\n";
# туда же набор проиндексированных файлов
foreach (@Files) {
    print "$WorkDir$_\n";
}



Как-нибудь накидаю простой поисковик по индексу.

--------------------
It's a nice day to die my friend!
PM MAIL WWW ICQ   Вверх
MDM
Дата 6.4.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Ура!!! Наконец-то! Вот и есть код для разбора!
Я завтра-послезавтра постараюсь его заставить работать на моём локальном сайте, возникнут вопросы... Спасибо GoDleSS!!!

Я скачал один из готовых бесплатных кодов с http://www.webscript.ru/scripts/Perl/Poisk/ ссылку на который дал мне дал Str!pe, но он мне подходит только тем, что делался специально под сервер Denwer, которым я пользуюсь, а вот 2 основных минуса: 
1). Сложный для нашего сайта (релевантность, фильтрация поиска, слишком подробный вывод результатов, поиск в найденом и т. д.), все эти навороты на таком сайте будут выглядить смешно. Как может идти речь о релевантности, если, например, поиковик найдет по запросу 5-10 ссылок;
2). Человек который написал этот посковик не сможет отвечать на мои "глупые" вопросы. Уж очень большой, наверное, поток вопросов к нему от людей разбирающихся...
А Вы мне сможете отвечать на мои "глупые" вопросы, даже?!  smile 
Вот мой очередной "глупый" вопрос:
Без баз данных можно обойтись?! Читал где-то писать  поиковик не используя базы данных - {цитата} странное занятие. Ух как же я не люблю эти базы данных, замучился с этим FOXPro, ещё и SQL. Но если надо, так надо... что поделаешь...

Информация о сайте:
  • Весь сайт занимает около 14 МБ (если учитывать только размер *.htm и *.html ~4-5МБ). 
  • При разработке сата использовался только HTML и JavaScripts.
  • HTML-форма поиска готовая есть, но её можно заменить (нужно).
  • Поиск будет проводится по файлам страниц, которые расположены в разных папках...
  • ....

GoDleSS
Цитата

Как-нибудь накидаю простой поисковик по индексу.

А то, что Вы здесь написали код не пойдёт??? Почему?

PM ICQ Skype   Вверх
GoDleSS
Дата 7.4.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 11.2.2007
Где: Пироговский

Репутация: 2
Всего: 2



Цитата

А то, что Вы здесь написали код не пойдёт??? Почему?

Это сборщик индекса, да и то по одной папке и не слишком "умный" - так для начального примера. Сам поисковик будет работать отталкиваясь от индекса.

Это сообщение отредактировал(а) GoDleSS - 7.4.2007, 00:35
--------------------
It's a nice day to die my friend!
PM MAIL WWW ICQ   Вверх
MDM
Дата 7.4.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Главное чтобы работал, я же не умею его запускать на локалке, не говоря уже о том, как я его буду запускать на сервере. Попробую на нем научится...
Вчера делал первые попытки,... что-то делаю неправильно,... ошибка!
Ну жить мне осталось мало... около 25-ти дней,... в мае защищать уже надо готовую работу... Вы форумчане моя последняя надежда...
PM ICQ Skype   Вверх
MDM
Дата 9.4.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 16.3.2007
Где: г. Нальчик

Репутация: нет
Всего: 4



Вот как я пытаюсь заставить работать поисковик GoDleSS'а (безрезультатно):

Копирую несколько html-страниц в одну папку C:\WebServers\home\Site. В этих страничках я буду искать!

Копирую HTML-код GoDleSS’а. В нем меняю action=”home/cgi-glob/search.pl”
Сам файл HTML-формы сохраняю в C:\WebServers
search.pl создам в директории C:\WebServers\home\cgi-glob\search.pl 
user posted image

Копирую код Perl GoDleSS’а в блокнот. В этом коде меняю:

Код

my $WorkDir='../';        # Дирректория, которую "грабим"

на
Код

my $WorkDir=' \home\Site'; 


Теперь жму поиск на форме. Результат – ErroR :(
user posted image

Как??? Этот файл находится же там…

Наверное я допустил кучу ошибок, что одному человеку мне это все объяснить, равносильно тому, что переписать книгу. Разъясните хотя бы часть, или хотя бы дайте ссылку, где мне можно это прочитать… НЕПОНИМАЮ…

PM ICQ Skype   Вверх
nitr
Дата 9.4.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



если верно (т.е. по стандартам и как указано на картинках) настроен сервер, то надо так:
action="/cgi-bin/search.pl"
у тебя должен в конфиге Альяс стоять /cgi-bin/ на папку/home/cgi-glob , думаю у тебя так и есть...

Добавлено через 28 секунд
используются НЕлокальные пути в формах smile

Добавлено через 4 минуты и 30 секунд
настрой Виртуальный хост (если умеешь, обычно так проще smile )


--------------------
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1288 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.