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

Рис 1. Графики изменения веса страницы
На рисунке красным обозначен график
, синим график
, зеленым график
.
Также в алгоритме учитывается не точное совпадение слова из запроса с словом из текста документа. В этом случае вес документа увеличивается на
, где k – количество таких неточных совпадений.
Структура алгоритма
Функция поиска в тексте совпадений с запросом пользователя
Начало
· Функция получает строковые переменные:
1. Текст_документа;
2. Ключевой_запрос;
· Инициализация констант:
1. Очки_за_точное_совпадение;
2. Очки_за_частичное_совпадение;
· Ключевой_запрос преобразуется к нижнему регистру;
· Создается Массив_ключевых_слов:
o Цикл: пока не достигнут конец Ключевого_запроса, выполнять:
§ Счетчик_Слов в Ключевом_запросе увеличивается на 1;
§ Элементу из Массива_ключевых_слов с порядковым номером = Счетчику_Слов присваивается значение слова с порядковым номером = Счетчику_Слов из Ключевого_запроса.
o Конец цикла.
· Аналогично Массиву_ключевых_слов создается массив Массиву_слов_текста, содержащий все слова из переменной Текст_документа;
· Цикл: пока Счетчик_i меньше, либо равен Количества_элементов_в_массиве_слов_текста выполнять:
o Значение Счетчика_i увеличивается на 1;
o Цикл: пока Счетчик_j меньше, либо равен Количества_элементов_в_массиве_ключевых_слов выполнять:
§ Значение Счетчика_j увеличивается на 1;
§ Если элемент с порядковым номером i из Массива_слов_текста совпадает с элементом с порядковым номером j из Массива_ключевых_слов, то:
· Значение Счетчика_ключевых_совпадений увеличивается на 1;
· Элемент массива Ключевых_совпадений с порядковым номером = значению Счетчика_ключевых_совпадений увеличивается на значение константы Очки_за_точное_совпадение;
§ Иначе Если значение Счетчика_ключевых_совпадений > 0 и значение Счетчика_j = значению Количеству_элементов_в_массиве_ ключевых_слов, то:
· Значение Счетчика_ключевых_совпадений приравнивается к нулю;
§ Если элемент с порядковым номером i из Массива_слов_текста совпадает частично с элементом с порядковым номером j из Массива_ключевых_ слов, то:
· Элемент массива Ключевых_совпадений с порядковым номером = 1 увеличивается на значение константы Очки_за_частичное _совпадение;
o Конец цикла;
· Конец цикла;
· Цикл пока Счетчик_k меньше, либо равен Максимальному_значению_счетчика_ ключевых_совпадений, выполнять:
o Переменная Вес_страницы увеличивается на:

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









