Розробка web-орієнтованої інтелектуальної системи пошуку контенту
Огляд існуючих пошукових систем, їх переваги і недоліки. Основні алгоритми для побуди веб-орієнтованої інтелектуальної пошукової системи. Програмні модулі, що відповідають за пошук інформації, розпізнавання тематики і ін. Веб-сайт для тестування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 02.07.2014 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
У розділі розглянуто основну проблематику обраної предметної області, визначено широкий розвиток даної галузі: преваги та недоліки існуючих програмних рішень, запропоновано методи вирішення існуючих неточностей. Визначено основні критерії, за умов виконання яких, розробка вважатиметься успішною. Проведено аналітичне проектування, що дало змогу чітко описати поставлену задачу шляхом розбиття на менші підзадачі. Обрано оптимальні методи та інструменти для реалізації усіх поставлених завдань.
Проведені розрахунки дозволяють зробити висновок про доцільність розробки, при цьому розробка має включати всі переваги розглянутих аналогів.
2. СПЕЦІАЛЬНА ЧАСТИНА. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА РОЗРОБКА WEB-ОРІЄНТОВАНОЇ ІНТЕЛЕКТУАЛЬНОЇ СИСТЕМИ ПОШУКУ КОНТЕНТУ
Обрана предметна область являє собою систему функціонуючого веб-сайту із розміщеною на ньому інформацією та системи швидкого, зручного та точного пошуку контенту на даному web-сайті.
Аналіз предметної області показав, що вона є достатньо вивченою, але постає ряд певних проблем пов'язаних з неточністю роботи пошукових систем в умовах їх використання на окремому web-ресурсі, а також існують проблеми з розробкою власне структури сайту та наповнення його контентом, включаючи створення відповідної бази даних для сайту для забезпечення повноцінної роботи пошукової системи, а також власне проблеми із розробкою інтелектуального системи.
Виділяючи пріоритетні напрямки при розробці програмного комплексу (мається на увазі уся розробка: сайт і його структура з усіма необхідними напрацюваннями та власне пошукова система) основною під задачею постає розробка саме інтелектуального пошукової системи, але при цьому необхідною умовою є правильна розробка та створення самого сайту, як носія інформації та пошукової системи. Таким чином одним із етапів розробок постає створення сайту та бази даних як попередньої необхідної умови для подальшого підключення та використання пошукової системи.
Розробка сайтів - це процес який вимагає грамотного планування. Статистика показує, що правильно розроблені сайти є популярними і прибутковими. До комплексу по розробці сайту можна віднести такі основні моменти, як проектування структури сайту та його карти, створення інтерфейсу, що в комплексі має забезпечити швидкий та зручний доступ до інформації не лише користувачеві, але і надасть більшу швидкодію при пошуку необхідних матеріалів. Правильне проектування бази даних також дає змогу легкого доступу до інформації, яка буде зберігатися в ній на програмному та користувацькому рівні, включаючи і полегшення, більшу точність та швидкість пошуку для розроблюваного модуля пошукової системи. Тому очевидним і незаперечним при розробці головної частини проекту - веб-орієнтованої інтелектуальної пошукової системи є попередня розробка комплексу Веб-носія.
Для задоволення користувацьких потреб, робота веб-орієнтованої інтелектуальної пошукової системи має відповідати наступним вимогам:
? точність - система має точно знаходити інформацію за введеним користувацьким запитом;
? швидкодія - система не має затрачати багато часу на пошук (не більше 10 секунд);
? легкість пошуку - користувач не має виконувати будь-яких додаткових дій для покращення пошуку;
? ресурсоємність - система не має вимагати особливих апаратних та програмних властивостей;
? зручність - система має включати зручний та привітний користувацький інтерфейс.
А також система має відповідати таким критеріям інтелектуальності:
? підтримка технологій підказок та живого пошуку;
? визначення тематики пошукового запиту;
? розпізнавання різних морфологічних форм введеного шуканого слова.
Отже, розробка web-орієнтованої інтелектуальної пошукової системи вважатиметься успішною при виконанні усіх вище вказаних пунктів. Безпосередньо для перевірки робото-здатності та тестування програмного продукту слід розробити Веб-сайт, як власне носій пошукової системи.
Враховуючи той факт, розробка має складатися із кількох етапів, доцільним і необхідним є розбиття основної задачі розробки на кілька більш менших під задач, в результаті чого робота значно спрощується для розробника і структуризується на кілька модулів, які в свою чергу також розбиваються на менші підзадачі.
Для програмної реалізації задачі і розробки усієї системи за основну мову програмування було обрано PHP (англ. PHP: Hypertext Preprocesso - PHP: гіпертекстовий препроцесор), попередня назва: Personal Home Page Tools - скриптова мова програмування, була створена для генерації HTML-сторінок на стороні Веб-сервера. PHP є однією з найпоширеніших мов, що використовуються у сфері Веб-розробок (разом із Java, ,Perl, Python, Ruby). PHP підтримується переважною більшістю хостинг-провайдерів. PHP - проект відкритого програмного забезпечення, інтерпретується Веб-сервером в HTML-код, який передається на сторону клієнта [33].
У ролі допоміжної мови програмування потрібно використати мову програмування JavaScript - стандарт мови програмування ECMAScript компанії Netscape, базується на принципах прототипного програмування. Найпоширеніше і найвідоміше застосування мови - написання сценаріїв для веб-сторінок, але, також, використовується для впровадження сценаріїв керування об'єктами вбудованими в інші програми [34].
Однією із вагомих для розробки характеристик є використання мови запитів. Найбільш простою для використання є SQL (англ. Structured query language - мова структурованих запитів) - декларативна мова програмування для взаємодії користувача з базами даних, що застосовується для формування запитів, оновлення і керування реляційними БД, створення схеми бази даних і її модифікація, система контролю за доступом до бази даних [35]. Сам по собі SQL не є ні системою керування базами даних, ні окремим програмним продуктом. Не будучи мовою програмування в тому розумінні, як C або Pascal, SQL може формувати інтерактивні запити або, будучи вбудованою в прикладні програми, виступати в якості інструкцій для керування даними. Стандарт SQL, крім того, вміщує функції для визначення зміни, перевірки і захисту даних.
В якості середовища розробки доцільно використовувати програми на кшталт Adobe Dreamweaver та Joomla 2.5.6 [36]. Обидва пакети є зручними та відповідають усім критеріям, необхідним при розробці сайтів, включаючи легкість у сприйнятті інтерфейсу для розробника.
Створення інтелектуальної пошукової системи web -сайту, яка б задовольняла користувацькі вимоги є досить трудомістким процесом, що вимагає попередньої розробки не лише структури самого сайту, його оптимізації, а й робота пошукової оптимізації над базою даних, створення низки пошукових алгоритмів, які б у комплексі забезпечували б повноцінне функціонування єдиного пошукового модуля, який відповідав би критеріям інтелектуальності для повноцінного функціонування усієї пошукової системи. Оскільки етап розробки сайту є вторинним предметом розробок, розглянемо методи та алгоритми, на основі яких будується власне пошукова система.
2.1 Архітектурні особливості інформаційно-пошукової системи
Розглянемо більш детально основіні компоненти, які вміщує в собі інтелектуальна пошукова система. Класична інформаційно-пошукова система складається з трьох частин [37]:
1. Web-павук (робот, агент).
2. Індексна база.
3. Пошуковий механізм (алгоритм).
Web-павук (робот, агент) - це програма, яка працює на кількох комп'ютерах підключених до мережі Інтернет, вона слідує за гіперпосиланнями (лазить по мережі) з веб сторінок і викачує всі знайдені файли. Тобто програма завантажує весь переглянутий Інтернет.
Такий агент є досить складним механізмом. По-перше, веб павуком може керувати власник сайту. Досить зберегти в кореневу директорію сайту спеціальний файл robots.txt. У цьому файлі на спеціальному мовою описані команди для веб павуків (що індексувати, як індексувати, що пропустити і т.д.). Це необхідно, в першу чергу, для приховування приватної інформації від пошукової системи. Були випадки, коли через ІПС google при введенні запиту "номери кредитних карток" виводилася приватна інформація. Після чого були навіть судові розгляди.
Більше того, такі павуки вміють обходити рекламні трюки з просування сайтів. У Internet існують "популярні запити" тобто слова і словосполучення, які використовують при пошуку найчастіше. Наприклад: "Завантажити музику", "10000 $ за день". І ось існує такий прийом для підвищення популярності сайту - "білим по білому" пишуть "популярні запити", таким чином, сайт може бути присвячений одній тематиці, а для його реклами використовують слова зовсім не пов'язані з основним сенсом сайту. Веб-роботи дуже суворо ставляться до таких обманів і не вносять такі сайти в базу.
Також Веб-роботи приймають через web -сайт заявки на індексацію тільки що створеного сайту. На нові Веб-сайти ніхто не посилається, і прийти рекурсивно по посиланнях інших сайтів не можна.
Інша частина ІПС - це індексатор. Його завдання обробляти "скачаний Інтернет". Ще більш складна система. Вона витягує всі слова з викачаних документів, і складає в певну індексну базу (індексні файли). Для кожного слова витягується інформація про те, як це слово розташоване на web-сторінці:
1. Позиція слова в тексті сторінки.
2. Кількість входжень слова в сторінці.
3. Колір і шрифт, використовуваний для оформлення слова.
Витягнуті слова заносяться в спеціальні словники (файли певного типу) при цьому словники можуть бути для декількох мов. При занесенні в словник часто відсікають закінчення і суфікси для більш ефективного зберігання інформації. Але це знижує точність пошуку. Словники є частиною індексу.
Словники в свою чергу пов'язані своїми ідентифікаторами з ідентифікаторами Веб-сторінок (вони присвоюються при внесенні). Будь-якому слову з словника відповідає набір doc_id-документів, в яких це слово зустрічається. Роботою по постійному формуванню інверсного індексу займаються сортувальники.
Рисунок 2.1 - Структура інверсного індексу
Розглянемо більш детально алгоритм пошуку. Нехай до пошукової системи буде введено деякий запит із ключовою пошуковою фразою. Перед тим, як обробити запит на пошук, пошукова система робить ряд кроків:
1. Перевіряє орфографію запиту. Іноді, в процесі швидкого набору тексту робляться описки. Новітні системи можуть знаходити помилки в словах (як ms word) і пропонувати ввести свій правильний варіант.
2. Також, слід зазначити, що відбувається генерація схожих за змістом слів (синонімів) і різних відмінкових форм. На запит користувача часто можуть бути запропоновані слова синоніми чи антоніми. Це істотно розширить межі пошуку. Для цього використовується спеціальні морфоаналізатори. Існує два типи морфоаналізаторов: ймовірнісні і ймовірносно-словникові. Останні більш якісні, тому що оброблене слово додатково перевіряється за словником.
3. Також, запит може перекладається на інші мови.
4. Стоп слова (займенники, прийменники). Останнім часом не використовується. Раніше це робилося для економії обчислювальних ресурсів. І тільки після цього йде запит на пошук. Програма, що формує результати пошуку, подивиться в словник, знайде там word_id для слів запиту і всіх схожих слів, і сформує запит до бази даних.
У результаті буде отримано сотні тисяч невпорядкованих результатів. Таким чином, результати потрібно впорядкувати.
І тут спрацьовують алгоритми для визначення порядку виведення результатів пошуку
Кожному результату присвоюється оцінка, яка обчислюється за нижче наведеними критеріями:
1. Кількість входжень. Зрозуміло, що чим більше буде зустрічатися шукане слово в сторінці, тим більше ймовірність, що ця потрібна сторінка.
2. Відстань між словами. Воно повинно бути мінімальною.
3. Page rank. Це число характеризує якість матеріалу. При цьому ця якість визначається власниками інших сайтів.
Розрахункова формула, опублікована С. Бріном і Л. Пейджем, виглядає наступним чином:
PR=(1-d)+d(PR(T1)/C(T1)+…+PR(Tn)/C(Tn)), (2.1)
де d - емпірично підібраний коефіцієнт (d = 0.85); Т1 … Tn - сторінки, що посилаються на даний документ; С (Tn) … С (Tn) - загальна кількість посилань, що ведуть зовні зі сторінок Т1 … Tn
Адміністратори ставлять посилання, як правило, на цікаві сайти. Тобто вони оцінюють їх і в разі позитивної оцінки поставлять на нього посилання.
4. Яким шрифтом виділено слова. У специфікації html є рівні. Чим вище рівень, тим результат повинен краще відповідати запиту
5. Мова користувача. Зрозуміло, що на перші місця повинні потрапити результати з сайтів тієї ж локальної зони, де знаходиться користувач. Якщо у цьому регіоні нічого не буде знайдено, то пошукова система має проводити пошук по іншомовним сайтам.
6. Вік сайту. Вважається, чим більше сайт живе в мережі, тим більше досвід у його власника і тим якісний матеріал або пропозиції.
Важливо, що без добре-спланованих web-павука і індексатора не можливо якісно упорядкувати результати пошуку, тому що критерії для упорядкування зберігаються при перших двох етапах. Тобто всі компоненти ІПС міцно пов'язані один з одним.
Як бачимо, параметрів безлічі і тут стоїть основне завдання - збалансувати їх. Тобто правильно оцінити кожен критерій оцінки. Результат може отримати дуже високу оцінку за одним критерієм, за іншими нульову. Такі результати вважаються не якісними.
Розглянемо більш детально загальну модель функціонування пошукової системи. Користувач, використовуючи можливості клієнтської частини, вводить ключове слово. Агент формування запиту, отримавши ключове слово, звертається до бази правил для отримання правил формування запитів. Отримавши ці правила, формує запит цю інформацію передає агенту пошуку. В свою чергу, агент пошуку та зберігання інформації відсилає отримані запити в Інтернет і отримує html-коди сторінок, які записує в свою оперативну базу даних. Потім цей агент запитує в бази правил правила видобування інформації з html-кодів. Опрацьовує інформацію, записану в своїй оперативній базі, згідно з правилами і записує вибрану за правилами інформацію в оперативній базі даних системи. Далі з цією базою даних працює клієнтська частина. Що ж являють собою ці бази даних? База правил формується розробником системи. Саме розробник опікується її правильним наповненням. Сама база правил складається з таких полів: назва сайту (єдине, що відображається користувачеві в клієнтській частині); приклад формування запиту - тут наведено приклад запиту до відповідного сайту; інформація про правило поєднання ключового слова із запитом попереднього поля;
У деталях реалізації пошукових механізмів можуть відрізнятися одна від однієї (наприклад, зв'язка Spider+Crawler+Indexer може бути виконана у вигляді єдиної програми, яка викачує відомі веб-сторінки, аналізує їх і шукає за посиланнями нові ресурси), проте всім пошуковим системам властиві описані загальні риси.
Spider. Забезпечує скачування сторінки і витягує всі внутрішні посилання з цієї сторінки.
Викачується html-код кожної сторінки. Для скачування сторінок роботи використовують протоколи HTTP. Працює «павук» наступним чином. Робот передає на сервер запит “get/path/document” і деякі інші команди HTTP-запиту. У відповідь робот отримує текстовий потік, що містить службову інформацію і безпосередньо сам документ.
Посилання витягуються з тегів а, area, base, frame, frameset та ін. Крім посилань, роботи обробляють редиректи (перенапрямлення). Кожна викачана сторінка зберігається у такому форматі:
1. URL сторінки.
2. Дата, коли сторінка була викачана.
3. Http-заголовок відповіді сервера.
4. Tіло сторінки (html-код).
Crawler - виділяє всі посилання, присутні на сторінці. Його завдання - визначити, куди далі повинен йти павук, ґрунтуючись на посиланнях або за заздалегідь заданим списком адрес. Краулер,проходячи по знайдених посиланнях, шукає нові документи, ще не відомі пошукові системи.
Indexer - індексатор розбирає сторінку на складові частини і аналізує їх, застосовуючи власні лексичні і морфологічні алгоритми. Аналізу піддаються різні елементи сторінки, такі як текст, заголовки, посилання структурні і стильові особливості, спеціальні службові html-теги і так далі.
Отже, модуль індексування дає змогу обходити за посиланнями задану кількість ресурсів, викачувати сторінки, що зустрічаються, витягувати посилання на нові сторінки з отриманих документів і здійснювати повний аналіз цих документів.
Database - база даних - це сховище всіх даних, які пошукова система викачує і аналізує. Інколи базу даних називають індексом пошукової системи.
Пошуковий сервер є найважливішим елементом всієї системи, оскільки від алгоритмів, покладених в основу її функціонування, безпосередньо залежить якість і швидкість пошуку.
База правил формується розробником системи. Саме розробник опікується її правильним наповненням. Сама база правил складається з таких полів:
1. Назва сайту (єдине, що відображається користувачеві в клієнтській частині).
2. Приклад формування запиту - тут наведено приклад запиту до відповідного сайту.
3. Інформація про правило поєднання ключового слова із запитом попереднього поля.
4. Правила видобування інформації з html-коду отриманої в результаті пошуку сторінки відповідного сайту.
Основний принцип роботи розроблюваної пошукової системи наведено на рисунку 2.2
Рисунок 2.2 - Схема роботи пошукових систем
Враховуючи динаміку руху інформації в Інтернеті, база правил повинна постійно перебувати під контролем розробника для зазначення відповідних змін властивостей сайту, для внесення нових тематичних сайтів, що з'явилися в мережі. Для наповнення цієї бази можна також використовувати інтелектуальні системи, які б в кооперації зі стандартними системами пошуку відбирали сайти з конкретною тематикою. Але часто для розкрутки своїх сайтів веб-майстри використовують не дуже чесні прийоми, які можуть давати неправильні результати аналізу веб-ресурсу. Саме для цього у процесі наповнення бази правил використовують людський фактор, за допомогою якого коректно відсіюють “непридатні” сайти.
Рисунок 2.3. - Алгоритму роботи агента формування запиту
Рисунок 2.4 - Алгоритм роботи агента пошуку і зберігання інформації
Оперативна база даних складається з інформації, необхідної користувачу, яка є невпорядкованою. Агент пошуку і зберігання інформації записує в оперативну базу даних отриману з html-коду інформацію, яка зберігається під такими полями:
1. Назва сайту.
2. Зображення, що відповідає конкретному результату.
3. Текст результату пошуку.
4. Посилання на детальнішу інформацію.
Ця база даних формується для оперативного збереження даних, які користувач може переглядати, сортувати, відбирати за певними критеріями, використовуючи клієнтську частину системи.
Розглянемо алгоритм роботи кожного агента окремо.
Агент формування запиту (рис. 2.3):
1. Отримання ключового слова від клієнтської частини.
2. Зчитування списку зазначених користувачем сайтів пошуку.
3. Перевірка кожного елементу зі списку сайтів (позначений - крок 4, позначений - крок 9).
4. Формування запиту до бази правил щодо вибраного сайту.
5. Отримання правила формування запиту до конкретного сайту.
6. Внесення ключового слова пошуку у правило формування запиту.
7. Створення запиту до вибраного сайту.
8. Формування списку запитів для агента пошуку та зберігання інформації (перехід на крок 10).
9. Додавання до списку запитів нульового запиту.
10. Повернення на крок 3, поки не закінчиться список сайтів.
11. Передача списку запитів агенту пошуку та зберігання інформації.
Агент пошуку і зберігання інформації.
1. На початку своєї роботи отримує від внутрішнього агента список сформованих запитів до тематичних сайтів.
2. Перевірка, чи запит не нульовий (якщо так - крок 8).
3. Відсилання запиту тематичному сайту.
4. Одержання коду html-коду сторінки, яка сформувалась як відповідь на запит.
5. Звернення до бази правил та отримання правила видобування інформації з коду сторінки.
6. Отримання потрібної інформації з html-коду сторінки (малюнки, текст, посилання).
7. Запис отриманої інформації в оперативну базу даних системи.
8. Перехід на крок 2 до закінчення списку запитів.
Як видно, всі ці компоненти тісно пов'язані один з одним і працюють у взаємодії, утворюючи чіткий, достатньо складний механізм роботи тематичної пошукової системи, що вимагає величезних витрат ресурсів.
2.2 Пошуковий павук
Завдання даного компонента - знайти всі посилання на сторінці, визначити їх атрибути (анкор, nofollow, ...) і вивести це все в stdout. Сторінок може бути не одна, а багато - їх список скрипт читає з stdin. Як єдиний і необов'язкового аргументу скрипт отримує максимальне число посилань на сторінці, яке потрібно обробляти. Це нормальна практика для павуків - сприймати тільки перші N посилань на сторінці. Розглянемо основні особливості скрипта пошукового павука детально. Перш за все слід проаналізувати та нормалізувати всі посилання, що можна виконати наступним чином: $ Url="http:// $ url" if ($ url! ~ / ^ Http: \ / \ / / i); next if (length ($ url)> MAX_URL_LENGTH); А потім переходимо до фільтрування по зонам розширення файлу, проводимо декодування тексту в стандарт utf-8, оскільки можливі неточності відображення україномовних символів: $ Type = $ text = ~ /[<>]/? "Other": "text"; utf8:: decode ($text). Також слід створити нові id-и усім знайденим ресурсам, а значить, слід позбавитися від старих, а також від сесій. Через цей скрипт проходить кожна знайдена сторінка, так що саме в ньому вони повинні подаватися на обробку - занесення в індекс, видирання якоїсь інформації і тд. Даний скрипт може тільки зчитувати результати обробки даних від багатьох нащадків. Вхідні ж дані слід передавати нащадкам або через аргументи (наприклад, імена вхідних файлів), або через змінні оточення. Більш оптимальним рішенням буде додання багато поточності.
Нехай є скрипт child.pl, який якимось чином обробляє рядки, що подаються йому на stdin. Для кожної вхідного рядка скрипт виводить деяку кількість рядків, порядок яких не важливий. Так, наприклад, веде себе скрипт, описаний в попередньому пункті і утиліта grep.
Тоді замість того, щоб обробляти дані в один потік, краще буде розпаралелити обробку даних. Отже, для цього передаємо рядок дочірньому процесу: chomp ($ line); dbg_print ("PARENT: writing to child, h =".fileno ($ h). ", line = $ line"); $ H -> say ($ line); # додає \n на кінці, $ H -> flush (); відправляємо дані. Перший аргумент скрипта - команда, яку потрібно разпаралелити. Другий, необов'язковий, аргумент - число нащадків (за замовчуванням - 8). Останній, також необов'язковий, аргумент - число рядків у вхідному файлі, може використовуватися при обробці великих обсягів даних. Якщо цей аргумент заданий, скрипт буде час від часу повідомляти, який відсоток рядків вже оброблений.
Отже, перейдемо власне до павука. Алгоритм роботи павука наступний. На вхід скрипту подається деяку кількість «стартових» URL. Умовно назвемо їх сторінками першого рівня вкладеності (РВ 1).
Далі завантажуємо кожну сторінку, беремо посилання, зберігаємо їх все в одному файлі. Коли всі посилання РВ 1 оброблені, беремо отриманий файл з посиланнями. Видаляємо з нього повтори і вже оброблені URL. Отримали список сторінок РВ 2. Переходимо до наступної ітерації, де отриманий список обробляється точно так само, як і сторінки РВ 1.
І так до тих пір, поки не досягнемо певного РВ, наприклад третього. Можна обробляти сторінки до четвертого рівня вкладеності, але шукати глибше навряд чи є сенс. Обов'язково слід ввести обмеження на максимальне число посилань, яке може містити одна сторінка. Наприклад, якщо на вхід павуку подається список делегованих доменів, на РВ 1 можна обробляти до 500 посилань, а на інших рівнях - тільки перші 150. За таким принципом, наприклад, працює павук біржі посилань SAPE. Зрозуміло, всі сторінки завантажуються в кілька десятків / сотень потоків. Отже, виробляємо чистку: (Rm work / * & & rm result / * & & rm tmp / *) 2> & 1> / dev / null`; Копіюємо список перших сторінок`Cat $ fname | sort-u-T. / Tmp | \ perl-e 'while (<>){ \ $_ = "http:// \ $ _" unless (\ $ _=~/^ http: \ \ \ / \ \ \ / /); print \ $ _; } '| \ rl> ./work/urls1.txt`; print "[$ date] SEARCHING NEW URLS \ n"; chomp ($ date = `date '+% d.% m.% y% H:% M'`); print "[$ date] ALL DONE! \n"; В каталозі зі скриптом повинні знаходиться каталоги з іменами work, tmp і result. У першому зберігаються файли з посиланнями на сторінки різних РВ (work / urls *. txt), другий каталог - тимчасовий і використовується утилітою sort, в останньому зберігаються файли з висновком скрипта get-links.pl для сторінок певного РВ ( result / level *. txt). Основним результатом є наступна частина програмного коду:
die "Usage: $0 <fname>\n" unless($fname);
die "No such file - '$fname'\n" unless(-f $fname);
# проаодимо чистку
`(rm work/* && rm result/* && rm tmp/*) 2>&1 > /dev/null`;
# копіюємо список список перших сторінок
`cat $fname | sort -u -T ./tmp | \
perl -e 'while(<>){\$_="http://\$_" unless(\$_=~/^http:\\\/\\\//);print \$_;}' | \
rl > ./work/urls1.txt`;
chomp(my $date = `date '+%d.%m.%y %H:%M'`);
print "[$date] START\n";
for my $level(1..MAX_LEVEL) {
chomp($date = `date '+%d.%m.%y %H:%M'`);
print "[$date] LEVEL: $level\n";
my $max_links = $level == 1 ? MAX_LINKS : MIN_LINKS;
my $num_urls = abs(`wc -l ./work/urls$level.txt`);
print "[$date] DOWNLOADING $num_urls URLS\n";
system("cat ./work/urls$level.txt | ./fork.pl './get-links.pl $max_links' ".NUM_CHILDS.
" $num_urls > ./result/level$level.txt");
last if($level == MAX_LEVEL);
chomp($date = `date '+%d.%m.%y %H:%M'`);
print "[$date] SEARCHING NEW URLS\n";
my $next_level = $level + 1;
`cat ./work/urls$level.txt >> ./work/done.txt`;
`cat ./result/level$level.txt | cut -f 2 | sort -u -T ./tmp |
grep -vFxf ./work/done.txt | rl > ./work/urls$next_level.txt`;
die "ERROR: \$? = $?" if($?);
}chomp($date = `date '+%d.%m.%y %H:%M'`);
Як видно із представленого фрагменту, всі основні моменти роботи алгоритмів пошукового павука включено.
2.3 Алгоритми релевантного пошуку
Розглянемо алгоритм пошуку з урахуванням української морфології та релевантності. Під побудовою даного алгоритму можна розуміти створення частини індексатора та бази, у якій будуть зберігатися морфологічні частинки слова. Також у деякій мірі це є модулем розширення функціоналу павука, який виконує пошук по базі даних. Морфологія є безсловниковою, а саме алгоритм Портера. Зазвичай для пошуку в рядку або тексті подібних слів, що мають однаковий корінь, можна скористатися алгоритмом Стереммінга. Це необхідно, наприклад, для визначення семантичного ядра або тематики тексту. Стереммінг - це алгоритм, за допомогою якого можна визначити кореневу основу слова. Якщо до виділеного кореня додати суфікси і відповідне закінчення, то можна отримати різні словоформи. Алгоритми подібного типу використовуються пошуковими системами yandex, google, іншими. Саме одним з таких алгоритмів є стеммер Портера [39]. Стеммер Портера не використовує коренів, а просто відкидає суфікси і закінчення, використовуючи основні морфологічні правила мови. Завдяки такому спрощення працює швидко, але з деякою похибкою. Насправді стеммінг алгоритм Портера - це псевдо морфологічний розбір слова, однак, цей алгоритм і був створений для простого і швидкого формування судження про структуру слова. Індексація виконується наступним чином: створимо спеціальну таблиця, де будуть зберігатися URL'ли сторінок їх текст і словоформи цього тексту. При додаванні і редагуванні контенту сайту, потрібно буде змінювати дані в таблиці пошуковика, викликаючи цю функцію. Тим самим, який би не був об'єкт, дані про нього будуть лежати в одній таблиці, а не розкидані по всій базі, що збільшить швидкість пошуку в рази.
Розглянемо основні положення впровадження алгоритму. У файл пошукового індексу записуються url сторінки, дату створення (у форматі unix_time, int (11)), текст об'єкта без зміни і словоформи тексту, без знаків пунктуації та зайвих символів.
Перш ніж записувати новини та сторінки в пошуковий файл, їх потрібно очистити від тегів і отримати словоформи. Оригінальний текст, який записується в полі page_text, очистити від html-тегів можна стандартною функцією strip_tags (), а для отримання словоформ, для запису в полі page_words_index, можна скористатися функцією clear_text (). Розглянемо побудований алгоритм Стемінга, реалізований на PHP.
<?
include_once ('stem.php');/ / Алгоритм Стеммінга
function clear_text ($ text)
{ $ Stemmer = new Lingua_Stem_Ru ();
$ Text = preg_replace ("/[^ \ w \ x7F-\ xFF \ s ]/"," ", strip_tags ($ text));
$ Text = explode ('', $ text);
foreach ($ text as $ word)
{ $ Min_word = $ stemmer-> stem_word ($ word);
$ Word_array [] = $ min_word;
}
return strtoupper (implode ('', $ word_array));
} echo clear_text ("<br> Вітаю <a href='/bla'> вас </ a>, h1>");?>
Функція додавання індексу буде виглядати наступним чином:
function insert_index ($ url, $ text)
{ $ Words = clear_text ($ text);
$ Text = strip_tags ($ text);
$ Date = time ();
mysql_query ("INSERT INTO` seach_index `(` url `,` date `,` page_text `,` page_words_in dex `)
VALUES ('$ url', $ date, '$ text', '$ words') ") or die (mysql_error ());}
Перед пошуком ключові слова потрібно буде перетворити на словоформи все тієї ж функцією clear_text() і шукати по полюpage_words_index наступним запитом:
SELECT * from seach_index WHERE MATCH (page_words_index) AGAINST()
Розглянемо алгоритм Портера, для отримання кореня слова та подальшого пошуку вже з кореня - алгоритм безсловникової морфології. Алгоритм не використовує словники, що є вагомою перевагою у трудомісткості та часі реалізації, не потрібно зберігати на сайті бінарні файли словників вагою в десятки мегабайт. Алгоритм працює набагато швидше за своїх конкурентів словникових, хоч і не так якісно як phpMorphy або ruMor для російської мови.
<? Php
Class Lingua_Stem_Ru
{var $ VERSION = "0.02";
var $ Stem_Caching = 0;
var $ Stem_Cache = array ();
var $ VOWEL = '/ аеіоуиеюя /';
var $ PERFECTIVEGROUND = '/ ((верб | івші | івшісь | ив | ивші | ившісь )|((?<= [А]) (у | воші | вшісь )))$/';
var $ REFLEXIVE = '/ (з [яь ])$/';
var $ ADJECTIVE = '/ (її | не | ті | е | ними | ими | їй | ий | ий | ой | їм | їм | и м | му | його | ого | е х | ую | юю | а | яя | ою | нею) $ / ';
var $ PARTICIPLE = '/ ((івш | ивш | ующ )|((?<=[ а]) (їм | нн | вш | ющ | щ) ))$/';
var $ VERB = '/ ((мулу | ила | єна | ейте | уйте | іте | чи | илі | їй | у ї | мул | ил | їм | им | єні | ить | ить | бач | ую | ю) | ((? <= [а]) (ла | на | ете | йте | чи | ї | л | їм | н | ло | н про | ет | ють | ни | ть | їж | нно )))$/';
var $ NOUN = '/ (а | єв | ів | не | ье | е | іямі | ями | ами | єї | ії | та | і їй | їй | ой | ий | й | і | и | и | ію | ью | ю | іє | ья | я) $ / ';
var $ RVRE ='/^(.*?[ аеіоуиеюя ])(.*)$/';
var $ DERIVATIONAL = '/ [^ аеіоуиеюя] [аеіоуиеюя] + [^ аеіоуиеюя] + [а еіоуиеюя ].*(?<= о) єсть? $ / ';
function s (& $ s, $ re, $ to)
$ This -> Stem_Caching = $ caching_level;}
return $ this -> Stem_Caching;}
function clear_stem_cache (){
$ This-> Stem_Cache = array ();}}
В результаті створюються словотворчі елементи за якими алгоритм розглядає пошукові слова, аналізуючи при пошуку корені слова, що є вагомою перевагою при впровадженні “розумного” пошуку, оскільки система буде шукати не лише точні спів падіння слів, а і їх різноманітні похідні форми.
2.3.1 Повнотекстовий пошук
Розглянемо алгоритми повнотекстового пошуку по таблицям MySQL. Що стосується MySQL 3.23.23, то ця версія MySQL підтримує повнотекстовий пошук та індексацію. Повнотекстові індекси в MySQL позначаються як індекси типу FULLTEXT. Ці індекси можуть бути створені в стовпцях VARCHAR і TEXT під час створення таблиці командою CREATE TABLE або додані пізніше за допомогою команд ALTER TABLE або CREATE INDEX . Завантаження великих масивів даних в таблицю буде відбуватися набагато швидше, якщо таблиця не містить індекс FULLTEXT, який потім створюється командоюALTER TABLE (або CREATE INDEX). Завантаження даних в таблицю, що вже має індекс FULLTEXT, буде більш повільною.
Повнотекстовий пошук виконується за допомогою функції MATCH(). Функція виконує пошук в природній мові, порівнюючи рядок з вмістом тексту (сукупність одного або більше стовпців, включених в індекс FULLTEXT). Рядок пошуку задається як аргумент у вираженні AGAINST(). Пошук виконується без урахування регістру символів. Для кожного рядка стовпця в заданій таблиці команда MATCH() повертає величину релевантності, тобто ступінь подібності між рядком пошуку і текстом, що містяться в цьому рядку зазначеного у списку оператора MATCH() стовпця.
Коли команда MATCH() використовується у виразі WHERE (див. приклад вище), повернуті рядка стовпців автоматично сортуються, починаючи з найбільш релевантних. Величина релевантністю представляє собою невід'ємне число з плаваючою крапкою. Релевантність обчислюється на основі кількості слів у цьому рядку стовпця, кількості унікальних слів у цьому рядку, загальної кількості слів у тексті й кількості документів (рядків), що містять окреме слово.
Пошук можливий також у логічному режимі, це пояснюється нижче в даному розділі.
Попередній приклад являє собою загальну ілюстрацію використання функції MATCH(). Рядки повертаються в порядку зменшення релевантності.
Розглянемо, як використовувати величини релевантності в явному вигляді. У разі відсутності виразів WHERE і ORDER BY повертаються рядки не впорядковуються. У такому разі запит повертає значення релевантності та, крім того, сортує рядки в порядку убування релевантності. Щоб отримати такий результат, необхідно вказати MATCH() двічі. Це не призведе до додаткових витрат, так як оптимізатор MySQL врахує, що ці два виклики MATCH() ідентичні, і запустить код повнотекстового пошуку тільки одного разу.
mysql> SELECT id, body, MATCH (title, body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title, body) AGAINST
-> ('Security implications of running MySQL as root');
2 rows in set (0.00 sec)
Для розбивки тексту на слова MySQL використовує дуже простий синтаксичний аналізатор. Словом є будь-яка послідовність символів, що складається з літер, чисел, знаків. Будь-яке слово, присутнє в стоп-списку (stopword) або просто занадто короткий (3 символу або менше), ігнорується.
Кожне правильне слово в наборі перевіряються текстів і в даному запиті оцінюється відповідно до його важливістю в цьому запиті чи набір текстів. Таким чином, слово, присутнє в багатьох документах, буде мати меншу вагу (і навіть, можливо, нульовий), як має більш низьке смислове значення в даному конкретному наборі текстів. З іншого боку, що рідко зустрічається слово отримає більш високу вагу. Потім отримані значення ваг слів об'єднуються для обчислення релевантності цього рядка стовпця.
Описана техніка підрахунку найкраще працює для великих наборів текстів (фактично вона саме для цього ретельно налаштовувалася). Для дуже малих таблиць розподіл слів не відображає адекватно їх смислове значення, і дана модель іноді може видавати некоректні результати.
mysql> SELECT * FROM articles WHERE MATCH (title, body) AGAINST ('MySQL');
Empty set (0.00 sec)
Пошук за словом “MySQL” у попередньому прикладі не призводить до якихось результатів, так як це слово присутнє більш ніж у половині рядків. По суті, це слово доцільно трактувати як стоп-слово (тобто слово з нульовою смислової цінністю). Це найбільш прийнятне рішення - запит на природній мові не повинен повертати кожну другий рядок з таблиці розміром 1Гб.
Малоймовірно, що слово, яке зустрічається в половині рядків таблиці, визначає місцезнаходження релевантних документів. Насправді, найбільш ймовірно, буде знайдено багато слів, що не стосуються запиту. Загальновідомо, що таке трапляється дуже часто при спробі знайти що-небудь в Інтернет за допомогою пошукових машин. Саме на цій підставі подібним рядках повинна бути призначено низьке смислове значення в даному конкретному наборі даних.
У MySQL 4.0.1 можливий повнотекстовий пошук також і в логічному режимі з використанням модифікатора IN BOOLEAN MODE.
У логічному режимі повнотекстового пошуку підтримуються наступні оператори:
“+” - попередній речі знак “плюс” показує, що це слово повинне бути присутнім у кожній повернутої рядку.
“-“ - попередній речі знак “мінус” означає, що слово не повинно бути у будь-якої повернутої рядку.
За умовчанням (якщо ні плюс, ні мінус не вказані) дане слово є не обов'язковим, але містять його рядки будуть оцінюватися більш високо. Це імітує поведінку команди MATCH(), AGAINST()-MATCH(), AGAINST() без модифікатора IN BOOLEAN MODE.
“< >” - ці оператори використовуються для того, щоб змінити внесок слова у величину релевантністю, яке приписується рядку. Оператор < зменшує цей внесок, а оператор > - збільшує його.
“~” - попередній речі знак “тильда” впливає як оператор заперечення, обумовлюючи негативний внесок даного слова в релевантність рядка. Їм відзначають небажані слова. Рядок, що містить таке слово, буде оцінена нижче за інших, але не буде виключена зовсім, як у випадку оператора - “мінус”.
“*” - зірка є оператором зрізання. На відміну від інших операторів, вона повинна додаватися в кінці слова, а не на початку.
“( )” - Круглі дужки задають порядок дії логічних операторів;
2.3.2 Визначення тематики пошуку
Алгоритм має в основі теорію нейронних мереж. Цінність алгоритму в тому - що алгоритм зможе реалізувати майже будь-який програміст, а також, що без, нього не буде впроваджено інтелектуальність пошуку у повній мірі. Визначимо поетапні кроки його побудови.
Визначення ключових слів сайту. Розглянемо основні моменти алгоритму:
1. Одержання сторінки пошуку;
2. Очищення від тегів, все крім літер і пробілів. Знаки пунктуації замінюються на прогалини;
3. Розбивка всього тексту на слова, тобто створення одновимірного масиву слів;
4. Видалення слів, менших ніж 2 літери;
5. Кожне слово проходить через стеммер.
Знову використовуватиметься алгоритм Портера, описаний вище.
6. При прогоні через стеммер створюється новий асоціативний масив, де ключем буде саме слово, а значенням кількість повторень слова.
7. Упорядкоування масиву за спаданням кількості повторень.
8. Видалення слів, що повторюються менше трьох разів (кількість під питанням).
9. У результаті отримано ключі сайту.
10. Перевіряємо кожене ключе по базі загальних слів не несучих тематику. Наприклад слова: "мене", "коли", "скільки" і т.д. Ці слова зберігаються в окремій таблиці бази даних.
Наступним кроком є створеня тематичної бази даних. Розглянемо більш детально.
1. Слід в базі даних створити три таблиці: "слова", "тематики" і "ваги". Поля таблиць:
"Слова": word_id, word
"Тематики": theme_id, parent_id, theme
"Ваги": word_id, theme_id, ves.
3. Заповнюємо таблицю тематик.
4. Вибираємо потрібну тему, наприклад "інтернет-ресури". Зі знайдених у першому етапі ключових слів сторінки вибираємо ті, які відносяться до цієї теми, і проставляємо їм коефіцієнти, наскільки сильно вони відносяться до даної теми (бал від 0 до 1). Пізніше це значення коригуватиметься. Це значення і буде синаптичної силою. У сумі всі результати дадуть активацію нейрона до даної тематики. У реальності це дає приголомшливі можливості навіть для багатозначних слів. Наприклад слово "замок" можна віднести і до захисту (дверний замок) і до архітектури (споруда). Це не вплине на вірність визначення.
Отже, у даному етапі створено семантичне ядро для кожної тематики, і вказано, з якою вагою відноситься до кожної теми певне слово.
Наступним кроком є коригування результатів. Можливо в минулому етапі невірно проставлені коефіцієнти і їх потрібно коректувати. Для цього необхідний окремий інтерфейс, де вибравши тематику бачиш всі ключові слова по ній з їх коефіцієнтами. Змінюючи коефіцієнти ми підсилюємо значення того чи іншого слова в певній темі. При аналізі безлічі запитів ми приходимо до стабільного результату.
2.4 Модуль “ live search” інтелектуальної пошукової системи
Як відомо, компанія Google представила своїм користувачам технологію живого пошуку, який здобув досить широку популярність, в результаті чого інші компанії, які пропонують пошукові сервіси також почали впроваджувати подібні технології. live search- це функція пошуку, яка дозволяє переглядати результати безпосередньо при введенні запиту. Дане нововведення було внесено через те, що експерти Google помітили, що на введення тексту йде більше часу, ніж на перегляд посилань.[40]
Існує кілька методів реалізації аналогів live search, представленого компанією Google для використання на різноманітних сайтах. Так найрозповсюдженішими є методи побудови за допомогою AJAX [41] та JAVA SCRIPT. Отже, розглянемо побудову модуля живого пошуку більш детально.
Скрипт буде приймати та передавати дані, використовуючи власний сервер, оскільки технологія вимагає обновлення результатів прямо при введенні тексту. У такому випадку слід організувати алгоритм передачі від скрипта до обробника, а перед цим встановити зв'язок із сервером. Розглянемо алгоритм більш детально. Після введення запиту, запускається внутрішній сервер ajax, за допомогою якого стає можливим обробка даних без перезавантаження сторінки. Виконується звернення на обмін даними. Якщо через якісь причини з'єднання не встановлено, сторінку браузера слід перезавантажити вручну, про що видається відповідне повідомлення про помилку. При успішному встановленні обміну даними, введені дані із форми шукаються у базі даних. Безпосередньо перед цим проводиться зєднання із базою даних, по якій проводитиметься пошук. Приклад передавання даних наведено нище.
document.getElementById("test").innerHTML='Загрузка...'; }
}
xmlhttp.open("GET","getuser.php?q="+str,true);//відправляємо методом GET файлу getuser.php
xmlhttp.send();
}
Перевірка валідності бази даних проводиться наступним чином:
mysql_connect("localhost", "root", "") or die ("помилка з'єднання з базою");
mysql_select_db ("ajax")or die ("База не знайдена");
mysql_set_charset("utf8");
header("Content-Type: text/html;charset=UTF-8
$user_get=$_GET['q'];
Важливим нюансом даної розробки є те, що відпадає необхідність проектування та розробки індексної бази даних, що є досить трудомістким процесом, оскільки при використанні даного методу інформація про знайдені файли буде буде зберігатися у тимчасових файлах, і оброблятися безпосередньо із них, без зайвих ресурсних та апаратних затрат, не втрачаючи швидкодії.
2.5 Використання API-Google для реалізації розширеного пошуку
Як було сказано вище, такі компанії-гіганти, як Google чи Яндекс пропонують свої послуги надання внутрішнього пошуку по сайту. Для багатьох власників сайту це є оптимальним рішенням, проте, дані послуги є не безкоштовними, або ж вимагають від користувача виконання певних умов безкоштовного користування, наприклад, розміщення на своїх сайтах рекламних банерів від вищезгаданих компаній, що є не завжди бажаним для користувача. Проте, існує можливість безкоштовного і законного використання індексної бази даних компанії Google, і створення власного Google-пошуку на сайті. При чому, у такому випадку отримується можливість пошуку інформації в мережі Інтернет прямо із власного сайту.
Розглянемо більш детально, яким методом можна побудувати даний пошуковий модуль, при цьому будемо використовувати API Google AJAX SEARCH, яка надається компанією для веб розробників [42]. Для початку необхідно розглянути деякі аспекти API. Режим earcherControl Draw - пошук управління може бути запрограмований для відображення в різних режимах. Google.search.DrawOptions об'єкт, що управляє поведінкою через setDrawMode () метод. Цей метод приймає такі аргументи:
google.search.SearchControl.DRAW_MODE_LINEAR
google.search.SearchControl.DRAW_MODE_TABBED
Щоб на встановити безліч аспектів, слід звернути режиму управління об'єктом пошуку, що проходять google.search.DrawOptions - об'єкт, як параметр для пошуку управління Draw()-методом
Інший поширений варіант доступний за допомогою цього методу, є здатність відокремити "форму пошуку" з набору результатів пошуку. Google.search.DrawOptions - об'єкт, що управляє поведінкою через метод setSearchFormRoot. Цей метод приймає елемент DOM, який буде виступати в якості контейнера для пошуку в формі.
Об'єкт Searcher. Метод AddSearcher() - управління об'єктом пошуку визначає, які пошукові служби управління пошуком працють. Цей метод приймає два аргументи, які вказують служби об'єкта, а другий аргумент, який вказує варіанти обслуговування. В даний час підтримуються такі об'єкти Searcher (послуги):
? google.search.LocalSearch
? google.search.WebSearch
? google.search.VideoSearch
? google.search.BlogSearch
? google.search.NewsSearch
? google.search.ImageSearch
? google.search.BookSearch (експериментальна)
? google.search.PatentSearch
Враховуючи, що Google Web Search API продовжує розроблятися, список підтримуваних послуг буде розвиватися з плином часу.
Отже, тепер перйдемо власне до розробки пошукового модуля. У секції body визначаємо основний контейнер елемент div #page. Форма розміщена всередині нього діє не тільки як пошукова , але і як контейнер. Форма не обмежується тільки відправкою даних, а діє ще й як звичайний контейнер. Таким чином, розмітка сторінки виходить мінімальної, але реалізує всі завдання, які від неї потрібні для організації пошуку. Використаємо чотири типи результатів пошуку - сторінки, новини, зображення і відео - вони всі використовують тільки два класи - WebResult і. ImageResult. Також встановлюються стилі для кнопки #more, яка динамічно додається jQuery в залежності від результатів, які повертаються Google.
Як вже згадувалося вище, цей додаток використовує. Google має власну бібліотеку JavaScript, але якщо її використовувати, то виникає ряд обмежень, які є небажаними при розробці. Тому краще за все використовувати чисту розробку форматування запитів JSONp прямо до API Google. Перш ніж перейти до створення програмного модуля, слід зазначити, що при використанні даного методу буде отримано масив javaScript, який наповнений об'єктами, кожен із яких містить тип пошуку, заголовок, URL і текст зі сторінки, яка містить терміни, що відповідають умовам пошуку. Використовуючи властивість GsearchResultClass ми можемо визначити як потрібно виводити інформацію, яка отримана в даний момент.
Отже, перейдемо безпосередньо до розробки. Слід створити об'єкт, який би містив загальні конфігурації, такі, як URL сайту початкову сторінку, тип пошуку за замовчуванням (пошук сторінок). Таким чином, створимо об'єкт даних налаштувань.
var config =
{siteURL : 'http://gazuy.com.ua/', //Сайт, на якому здійснюватиметься пошук.
searchSite : true,
type : 'web',
append : false,
perPage : 8,//Google допускає 8-технологій
page : 0 // Перша сторінка
}
Також можна визначити пошук не окремо по сайту, а організувати звичайний пошук, що виконується на головній сторінці google.com лише зі свого сайту. Для цього визначається функція $('#searchForm').submit(function(), і встановлюються радіо-конпки для вибору типу пошуку.
Далі слід визначити та встановити тип пошуку:
config.type = el.attr('data-searchType');
$('#more').fadeOut();
Тобто, буде здійснюватися пошук за даними .
Коли передається форма, jQuery викликає функцію googleSearch(), яка відправляє запит JSONp до API Google, генерує розмітку для виведення результатів пошуку, і вставляє їх у div #resultsDiv. Вона може або заздалегідь видалити вміст div (якщо ми робимо новий пошук), чи додати результати до вже наявних.
В обох випадках використовується однакова логіка - створюється новий div. PageContainer для кожного набору результатів (даний div має нижню межу, тому легко відокремити одну сторінку від іншого), потім створюється об'єкт класу result (він розбирається нижче), ініціалізується і його розмітка додається до pageContainer
Також розглянемо функцію класу functionresult(r). Дана функція діє як конструктор класу result. Вона отримує об'єкт, який повертається з API Google (приклад об'єкта на початку кроку jQuery) і ініціалізує arr у відповідності зі значенням GsearchResultClass. Зауважимо, що arr визначається як масив, а не як рядок. Так процес протікає трохи швидше, ніж конкатентація рядків між собою.
Внизу визначення класу міститься метод toString (). Він викликає внутрішній метод масиву join, який перетворює його в рядок. ToString () є магічним методом, який неявно викликається при створенні об'єкта результату в script.js.
У даному розділі було розроблено основні алгоритми для побудови веб-орієнтованої інтелектуальної пошукової системи. Створено програмні модулі, які відповідають за пошук інформації, розпізнавання тематики запиту, визначення морфологічних основ ключових слів запиту та впроваджено прогресивні технології, такі як “живий пошуку”, “видача швидких підказок”. Однією з вагомих особливостей є можливість використання пошукової системи для розширеного пошуку інформації в Інтернеті, за допомогою використання API-Google.
2.6 Тестування програмного продукту
Актуальним питанням у розробці будь-якого програмного продукту є визначення його відповідності поставленим цілям та оцінка робото-спроможності. Задача оцінки роботи Веб-системи визначається досить складно та має індивідуальний характер підходу. Тому розглянемо основні особливості та ключові моменти по визначенню якості та відповідності вимогам розроблюваної веб-орієнтованої інтелектуальної пошукової системи.
Прейдемо до розгляду основних особливостей створеного Веб-сайту, оскільки він є головним параметром для проведення тестування роботи пошукового модуля.
Отже, обрана тематика сайту - це сайт кафедри ВНЗ, що відповідає більшості користувацьких запитів та вподобань, а також має більш універсальний характер для різних аспектів пошуку. Основна тема сайту - інформація абітурієнтам про кафедру даного ВНЗ, головна сторінка сайту представлена на рисунку 2.5, де і представлена навігація сайту.
...Подобные документы
Методи результативного пошуку інформації в Інтернеті. Уявлення про пошукові служби, їх призначення та структура. Основні типи пошукових служб: пошукові каталоги, рейтингові системи, індексні бази даних. Спрямованість тематики і широта охоплення ресурсів.
реферат [33,5 K], добавлен 23.04.2010Аналіз властивостей безкоштовних пошукових та поштових серверів Інтернету. Огляд методики ранжирування результатів пошуку в інформаційно-пошукових системах бібліотек. Вивчення можливостей пошукової системи "Мета", пошуку по реєстру українських сайтів.
курсовая работа [142,9 K], добавлен 17.11.2011Принципи та особливості роботи пошукових роботів. Аналіз відмінностей каталогів від пошукових систем. Шляхи та параметри оцінювання обсягів індексації сучасних пошукових систем. Загальні рекомендації щодо додавання сайту до пошукової системи чи каталогу.
реферат [101,3 K], добавлен 18.11.2010Розробка, дослідження та реалізація методів вирішення завдань аналізу, розпізнавання і оцінювання зображень як один із провідних напрямків інформатики. Класифікація та аналіз існуючих методів розпізнавання образів, переваги та недоліки їх застосування.
статья [525,8 K], добавлен 19.09.2017Аналіз інформаційних систем, етапів обробки інформації, Web-програмування. Огляд засобів ідентифікації користувача в САТДН. Розробка інформаційної і адміністративної підсистем для системи автоматизованого тестування для дистанційного навчання (САТДН).
дипломная работа [10,3 M], добавлен 21.04.2014Використання автоматичних систем інформаційного пошуку для зменшення "інформаційного перевантаження". Методи організації пошуку: атрибутивний, повнотекстовий і вибірка видань. Тематичні каталоги та пошукові машини. Системи Yandex, Rambler та Google.
реферат [333,0 K], добавлен 18.05.2011Критерії (вимоги) до створення автоматичного робочого місця оператора реєстратури. Обґрунтування вибору середовища програмування та засобів збереження даних. Алгоритм програми. Опис інтерфейсу проекту системи. Програмні модулі та керівництво користувача.
дипломная работа [1017,0 K], добавлен 31.10.2014Технологія пошуку інформації в мережі Інтернет. Можливості спеціальних служб, індексів. Інформаційні ресурси у каталогах. Системи мета-пошуку, пошуку в конференціях Usenet, пошуку людей. Знаходження інформації із застосуванням серверів глобального пошуку.
реферат [38,8 K], добавлен 20.05.2011Огляд методів розпізнавання образів. Основні ідеї інформаційно-екстремального методу розпізнавання рукописних символів. Критерій оптимізації параметрів функціонування даної системи. Інформаційне та програмне забезпечення обробки рукописних символів.
дипломная работа [291,0 K], добавлен 14.10.2010Реалізація портальної системи, на основі якої працює веб-сайт ПП "Агромат". Розробка системи адміністрування веб-сайтом для редагування контенту веб-сайту за допомогою веб-браузера з використанням мови програмування РНР та сервера баз даних MySQL.
дипломная работа [1,9 M], добавлен 24.09.2012Огляд інтелектуальних принципів організації процесу розпізнавання символів. Розробка системи безклавіатурного введення документів у комп’ютер. Опис і обґрунтування проектних рішень; розрахунки і експериментальні дані; впровадження системи в експлуатацію.
дипломная работа [182,5 K], добавлен 07.05.2012Особливості та методика пошуку інформації та об’єктів у зовнішній пам’яті комп’ютера, в мережі або операційній системі Windows. Специфіка використання автономної й онлайнової довідки операційної системи. Параметри пошуку в прихованих або системних папках.
конспект урока [885,7 K], добавлен 03.01.2010Cтворення системи для впорядковування інформації про файли, що зберігаються на компакт-дисках або інших знімних носіях. Загальні вимоги до розробки. Технології розробки Windows-додатків. Опис функціональних можливостей і програмної реалізації системи.
дипломная работа [891,7 K], добавлен 25.10.2012Дослідження проблеми пошуку автомобілів та постановка задачі створення автокаталогу з використанням мови програмування PHP і JаvаScrіpt. Дослідження моделей прецедентів системи та їх класової архітектури. Моделювання розподіленої конфігурації систем.
курсовая работа [3,7 M], добавлен 11.10.2010Оптимізація розташування посилань на інформаційні ресурсах у мережевих пошукових системах за допомогою спеціальних вірно обраних ключових слів. Розробка програмного забезпечення SEO-системи для тестування і читання RSS каналів відвідувачами сайту.
дипломная работа [2,3 M], добавлен 14.06.2013Аналіз банківських автоматизованих систем та інтернет-банкінгу в Україні та світ. Проектування бази даних web-орієнтованої банківської системи та розробка програмного продукту. Моніторинг курсів валют банків держави. Розміщення системи у мережі Інтернет.
дипломная работа [2,7 M], добавлен 12.06.2013Характеристика прикладних програм керування контентом, які використовуються для технічної підтримки продукції компанії. Огляд збору, адаптації, зберігання, тестування і верифікації контенту. Аналіз налаштування системи під особисті вимоги користувача.
реферат [26,1 K], добавлен 22.02.2012Сегментація і нормалізація зображень. Основні функціональні можливості та режими роботи комплексу розпізнавання письмового тексту. Розробка комплексу оптичного розпізнавання символів. Шрифтові та безшрифтові алгоритми розпізнавання друкованого тексту.
курсовая работа [1,7 M], добавлен 19.05.2014Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.
дипломная работа [2,8 M], добавлен 11.05.2012Історія розвитку і створення Інтернет. Протоколи передачі даних. Способи організації пошуку інформації Інтернет. Пошукові системи та сервіси: Яндекс, Google, шукалка. Послідовність виконання пошуку необхідної інормації за допомогою браузера Mozilla.
дипломная работа [4,9 M], добавлен 22.07.2015