Описание алгоритма поиска по документам, осуществляемого с помощью метода ключевых слов

Описание алгоритма

Программа последовательно сравнивает каждый элемент из множества слов текста с элементами из множества слов запроса пользователя. Если элементы совпадают, то программа последовательно сравнивает следующие n-1 элементов (где n – количество слов в запросе пользователя). В зависимости от того, совпадают следующие элементы, вес страницы увеличивается по экспоненциально-степенной функции. Т. е. за совпадение 1 слова из запроса и 1 слова из текста вес страницы увеличится на . Но при совпадении 1 слова из запроса и 10 слов из запроса, вес страницы увеличится уже в . Но если в запросе, к примеру 3 слова и все 3 слова совпали точно в тексте документа 1 раз, то вес повышается на . Таким образом, страницы, которые не содержат точно совпадающих ключевых фраз, не смогут набрать больший вес, чем страницы содержащие слова, совпадающие с запросом пользователя.

Рис 1. Графики изменения веса страницы

На рисунке красным обозначен график , синим график , зеленым график .

Также в алгоритме учитывается не точное совпадение слова из запроса с словом из текста документа. В этом случае вес документа увеличивается на, где k – количество таких неточных совпадений.

Структура алгоритма

Функция поиска в тексте совпадений с запросом пользователя

Начало

·  Функция получает строковые переменные:

1.  Текст_документа;

2.  Ключевой_запрос;

·  Инициализация констант:

1.  Очки_за_точное_совпадение;

2.  Очки_за_частичное_совпадение;

НЕ нашли? Не то? Что вы ищете?

·  Ключевой_запрос преобразуется к нижнему регистру;

·  Создается Массив_ключевых_слов:

Цикл: пока не достигнут конец Ключевого_запроса, выполнять:

§  Счетчик_Слов в Ключевом_запросе увеличивается на 1;

§  Элементу из Массива_ключевых_слов с порядковым номером = Счетчику_Слов присваивается значение слова с порядковым номером = Счетчику_Слов из Ключевого_запроса.

Конец цикла.

·  Аналогично Массиву_ключевых_слов создается массив Массиву_слов_текста, содержащий все слова из переменной Текст_документа;

·  Цикл: пока Счетчик_i меньше, либо равен Количества_элементов_в_массиве_слов_текста выполнять:

o  Значение Счетчика_i увеличивается на 1;

Цикл: пока Счетчик_j меньше, либо равен Количества_элементов_в_массиве_ключевых_слов выполнять:

§  Значение Счетчика_j увеличивается на 1;

§  Если элемент с порядковым номером i из Массива_слов_текста совпадает с элементом с порядковым номером j из Массива_ключевых_слов, то:

·  Значение Счетчика_ключевых_совпадений увеличивается на 1;

·  Элемент массива Ключевых_совпадений с порядковым номером = значению Счетчика_ключевых_совпадений увеличивается на значение константы Очки_за_точное_совпадение;

§  Иначе Если значение Счетчика_ключевых_совпадений > 0 и значение Счетчика_j = значению Количеству_элементов_в_массиве_ ключевых_слов, то:

·  Значение Счетчика_ключевых_совпадений приравнивается к нулю;

§  Если элемент с порядковым номером i из Массива_слов_текста совпадает частично с элементом с порядковым номером j из Массива_ключевых_ слов, то:

·  Элемент массива Ключевых_совпадений с порядковым номером = 1 увеличивается на значение константы Очки_за_частичное _совпадение;

Конец цикла;

·  Конец цикла;

·  Цикл пока Счетчик_k меньше, либо равен Максимальному_значению_счетчика_ ключевых_совпадений, выполнять:

o  Переменная Вес_страницы увеличивается на:

где k – значение Счетчика_k, a[b] – элемент массива Ключевых_совпадений с порядковым номером k.

·  Конец цикла.

Конец

Блок схема алгоритма

Подпись: Расчет веса страницы