Главная » Все файлы » Просмотр файлов из архивов » Документы » Разработка библиотеки для осуществления адаптивного поиска в базах данных Web-приложений (бакалаврская работа)

Разработка библиотеки для осуществления адаптивного поиска в базах данных Web-приложений (бакалаврская работа), страница 3

2015-08-20СтудИзба

Описание файла

Документ из архива "Разработка библиотеки для осуществления адаптивного поиска в базах данных Web-приложений (бакалаврская работа)", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "выпускные работы и поступление в магистратуру" в общих файлах.

Онлайн просмотр документа "Разработка библиотеки для осуществления адаптивного поиска в базах данных Web-приложений (бакалаврская работа)"

Текст 3 страницы из документа "Разработка библиотеки для осуществления адаптивного поиска в базах данных Web-приложений (бакалаврская работа)"

4. Проиндексировать оставшиеся лексемы в массиве :

4.1. выбрать первую лексему массива ;

4.2. если в таблице проиндексированных лексем отсутствует строка вида , где – произвольное значение счётчика индексируемой лексемы , то добавить строку , иначе увеличить значение счётчика в найденной строке на единицу ;

4.3. если – последняя лексема в массиве , то перейти к п. 5, иначе перейти к следующей лексеме и повторить пункты 4.2 и 4.3.

5. Из таблицы проиндексированных лексем сформировать массив всех лексем пользователя с идентификатором , упорядоченный по убыванию соответствующих значений счётчиков.

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

7. Осуществить поиск информации в базе данных по запросу (любым из существующих методов ИП). В результате сформировать массив результатов .

8. Упорядочить результаты по возрастанию значений , где – любая функция сходства и , убывающая при увеличении степени сходства своих аргументов (например, функция Левенштейна).

9. Вывести полученные результаты .

Блок-схема описанного алгоритма приведена на рисунке 2.1.

Рис. 2.1. Блок-схема алгоритма адаптивного поиска.

Отметим, что для использования описанного алгоритма в реальных системах необходимо дополнительно определить правила удаления проиндексированных лексем из базы данных с целью предотвращения её переполнения. Один из возможных подходов – ограничение максимально возможного числа индексируемых лексем на каждого пользователя.

В 8 пункте в качестве рекомендуется брать функцию Левенштейна или функцию Дамерау-Левенштейна.

Расстояние Левенштейна (функция Левенштейна) в теории информатики и компьютерной лингвистики является мерой разницы двух последовательностей символов (строк) относительно минимального количества операций вставки, удаления и замены, необходимых для перевода одной последовательности в другую. Например, чтобы перевести слово «конь» в слово «кот» необходимо совершить одну замену («н» на «т») и одну операцию удаления («ь»), соответственно дистанция Левенштейна в этом случае составляет 2.

Расстояние Дамерау-Левенштейна – это мера разницы двух строк символов, определяемая как минимальное количество операций вставки, удаления, замены и транспозиции (перестановки двух соседних символов), необходимых для перевода одной строки в другую. Является модификацией расстояния Левенштейна, отличается от него добавлением операции перестановки.

Выводы по главе 2

Разработан метод хранения предпочтений пользователей, полученных на основании предыдущих поисковых запросов. Описан алгоритм адаптивного поиска в базах данных. Данный алгоритм может быть использован для разработки на его основе библиотеки для осуществления адаптивного поиска в базах данных Web-приложений.

3. РАЗРАБОТКА ПРОГРАММНОЙ БИБЛИОТЕКИ

3.1. Проектирование

На базе описанного в предыдущей главе алгоритма была спроектирована и реализована на языке PHP программная библиотека для осуществления адаптивного поиска в базах данных Web-приложений. Данная библиотека позволяет осуществлять поиск текстовой информации в большинстве популярных баз данных, а именно: mSQL, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite и InterBase.

При проектировании библиотеки был выбран объектно-ориентированный подход. Ключевыми объектами, выделенными в процессе проектирования, являются объект соединения с базой данных, объект результата и объект ошибки выполнения поискового запроса. UML-диаграмма основных классов, используемых в библиотеке, представлена на рисунке 3.1.

Класс DB является основным классом библиотеки. Ключевым понятием данного класса является DSN (data source name) – имя источника данных, представляющее собой строку или массив. DSN, заданный в виде строки, имеет следующий вид: phptype://username:password@protocol+hostspec/database?options.

Рассмотрим основные части DSN:

phptype – тип используемого драйвера базы данных (mssql, mysql и т. п.);

username – имя пользователя базы данных;

password – пароль пользователя;

protocol – коммуникационный протокол (tcp, unix и т. п.);

hostspec – спецификация хоста (имя хоста и номер порта);

database – имя базы данных для подключения;

options – дополнительные параметры, разделённые символом “&”.

Рис. 3.1. Диаграмма основных классов библиотеки.

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

phptype://username:password@hostspec/database_name

phptype://username:password@hostspec

phptype://username@hostspec

phptype://hostspec/database

phptype://hostspec

phptype

Кроме того, DSN может быть задан с помощью ассоциативного массива, ключи которого носят те же имена, что и части строки DSN, описанные выше: phptype, username, password, protocol, hostspec, database. Номер порта указывается отдельно от имени хоста через элемент с ключом port. Дополнительные параметры подключения в этом случае должны быть указаны в параметре database и отделены от имени базы данных символом “?”. Для конвертирования DSN из массива в строку и обратно предусмотрены методы getDSNString() и parseDSN(). Данные методы класса позволяют разработчику указывать DSN в любом из двух возможных типов.

Основные методы класса, factory() и connect(), позволяют взаимодействовать с требуемым источником данных по его DSN. Метод connect(), в отличие от factory(), сразу же устанавливает соединение, не дожидаясь первого запроса к базе данных. Оба метода возвращают объект одного из наследников класса DB_common: DB_mssql, DB_mysql, DB_mysqli, DB_pgsql, DB_ibase или DB_oci8. Подобный подход позволяет легко расширять библиотеку.

Классы DB_result и DB_row формируют единый интерфейс для работы с результатами поисковой выдачи, не зависящий от типа используемого драйвера базы данных. Методы класса позволяют работать с результатом как с ассоциативным или нумерованным массивом. Кроме того, методы nextResult() и fetchRow() позволяют обрабатывать полученный результат строка за строкой и не хранить весь массив данных.

Поисковые методы объектов класса DB_common используют расширенный класс phpMorphy одноимённой библиотеки морфологического анализа, распространяемой бесплатно для некоммерческого использования. Методы phpMorphy позволяют решать следующие задачи: лемматизация (получение нормальной формы слова), получение всех форм слова, получение грамматической информации для слова (часть речи, падеж, спряжение и т. д.), изменение формы слова в соответствии с заданными грамматическими характеристиками, изменение формы слова по заданному образцу. Поддерживаемые в phpMorphy языки: русский, английский, немецкий, украинский, эстонский. Есть возможность добавить поддержку других языков. phpMorphy поддерживает все однобайтовые кодировки (windows-1251, iso-8859 и т. п.) и Unicode кодировки (utf-8, utf-16le/be, utf-32, ucs2, ucs4). По умолчанию библиотека работает с кодировкой UTF-8. phpMorphy использует для работы словарь. Поддерживаются словари AOT и myspell, свободно распространяемые, в том числе и для коммерческого использования. Словари представлены в двух видах: в исходном и бинарном. Исходный словарь представлен в виде XML файла и содержит основы слов, правила изменения и грамматическую информацию.

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

Физически словарь представлен в виде нескольких файлов:

common_aut.ru – хранилище всех словоформ;

morph_data.bin – хранилище грамматической информации;

predict_aut.bin – хранилище окончаний для предсказания.

Именование файлов словаря производится в соответствии с шаблоном <имя_файла>.<язык>.bin, где <язык> – условный код языка, в виде ISO3166 кода страны и ISO639 кода языка, то есть ru_ru, en_en и т. п. Данный метод позволяет размещать в одном каталоге словари для нескольких языков.

Весь процесс поиска при работе с библиотекой состоит из трёх простых действий: подключения файла библиотеки, установки соединения с базой данных, например, с помощью метода DB::connect() и вызова метода поиска DB_Common::search() с указанием необходимых параметров. Пример работы с библиотекой приведён в листинге 3.1.

require_once 'DB.php';

// Источник данных

$dsn = 'mssql://login:pass@localhost/db_name';

// Установка соединения с базой данных

$db =& DB::connect($dsn);

// Поиск

$params = array('from' => 'table', 'where' => 'field');

$results = $db->search('Поисковый запрос', $params);

// Вывод результатов

while($r = $results->fetchRow())

echo $r['field'];

Листинг 3.1. Пример использования библиотеки.

Класс DB_error – вспомогательный класс для обработки возможных ошибок, возникающих в процессе работы с библиотекой. Объекты данного класса могут быть легко преобразованы в текстовые сообщения о возникшей ошибке, что существенно облегчает процесс отладки приложений, создаваемых на основе данной библиотеки. Пример обработки ошибок, возникающих при установке соединения с базой данных, приведён в листинге 3.2. Обработка ошибок, возникающих во время поиска, осуществляется аналогично.

require_once 'DB.php';

// Источник данных

$dsn = 'mssql://login:pass@localhost/db_name';

// Установка соединения с базой данных

$db =& DB::connect($dsn);

// Обработка ошибок

if (DB::isError($db))

echo $db->getMessage();

Листинг 3.2. Пример обработки ошибок.

Кодирование скриптов библиотеки осуществлялось на языке программирования PHP, интенсивно применяемом при разработке Web-приложений, в среде NetBeans.

3.2. Системные требования

Для использования библиотеки необходимо, чтобы сервер удовлетворял следующим системным требованиям:

  1. наличие PHP версии 5.0 (или выше);

  2. поддержка модуля mbstring.

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

3.3. Настройка параметров адаптивного поиска

Несмотря на то, что значения параметров по умолчанию подобраны таким образом, чтобы оптимизировать скорость работы библиотеки и не допустить чрезмерного роста таблицы индексируемых слов, может потребоваться изменить те или иные параметры. Значения параметров изменяются с помощью метода setOption() класса DB_common, принимающего два аргумента: название параметра и устанавливаемое значение. В идеале параметры адаптивного поиска должны подбираться, исходя из специфики конкретной задачи.

Дадим подробное описание изменяемых параметров адаптивного поиска. В скобках указаны значения по умолчанию.

users_words_table_name (adaptive_search_users_words) – имя таблицы в базе данных для хранения ключевых слов пользователей. Если во время поиска таблица с таким именем не будет найдена в базе данных, то она будет создана автоматически. Таким образом, указав специализированное имя, можно использовать уже имеющуюся в базе данных таблицу ключевых слов пользователей.

users_words_table_charset (utf8) – кодировка таблицы для хранения ключевых слов пользователей. По умолчанию используется UTF-8 (от англ. Unicode Transformation Format) – наиболее распространённая в настоящее время кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. В отличие от UTF-16, UTF-8 является самосинхронизирующейся кодировкой: при потере одного байта последующие байты будут раскодированы корректно.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5231
Авторов
на СтудИзбе
425
Средний доход
с одного платного файла
Обучение Подробнее