www.gcmsite.ru

Новости Программы PHP-скрипты Статьи Числа
Услуги Резюме Игры Автомобили Поиск

СИСТЕМНОЕ И ВЕБ-ПРОГРАММИРОВАНИЕ
компьютерная техника, игры

Поиск по сайту, виды поисковых алгоритмов

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

Поиск по сайту. Сканирование каталогов.

Данный алгоритм имеет одно главное преимущество: отсутствует база страниц, по которым осуществляется поиск. Результат работы алгоритма формируется при последовательном (в более развитых алгоритмах - параллельном) просмотре файлов в искомых каталогах.

Для каждого найденного файла производятся 3 операции:

    чтение файла (x временных тактов)
    удаление всех html-тегов (2*x)
    поиск в оставшемся тексте целевого запроса по шаблону (2*x)

Введем такую формулу: n* (x+2*x+2*x) = 5*x*n, где n - количество страниц, которые нужно проверить по данному алгоритму. Для 1000 поисковых страниц получим 5000*x тактов времени.

Чем сложнее алгоритм, тем менее простым становится шаблон поиска. Например, производится поиск не только для полного посимвольного совпадения целевого запроса, но и морфологически близких словосочетаний.

Поиск по сайту. Поиск в индексной базе.

Алгоритм поиска по индексной базе имеет единственный недостаток: индексная база занимает место. В зависимости от структуры индексной базы, она может занимать почти такой же объем, какой занимает сайт со всеми страницами. В пределе получаем удвоение размера на хостинговой площадке, что критично для сайтов с огромным количеством страниц (например, более 65000 страниц).

Как работает алгоритм?

    чтение индексной базы (10*x тактов, причем, всего 1 раз)
    поиск в отдельных строках базы целевого запроса (2*x)

Используя формулу из предыдущего подраздела, получим: 10*x + n*(2*x), где n - количество записей в индексной базе. Для 1000 записей получим 10*x+2000*x=2010*x тактов времени.

Сравнительный анализ поисковых алгоритмов.

Рассмотренные алгоритмы дают базовое представление о проблеме поиска по сайту. Краткие выводы:

  • Алгоритм поиска по индексной базе работает в 2,5 раза быстрее алгоритма поиска со сканированием каталогов.
  • Алгоритм поиска по индексной базе увеличивает размер занятого дискового пространства.
  • Замедляющим фактором для любого алгоритма поиска является чтение информации с жесткого диска. Многократное чтение маленьких файлов всегда хуже однократного чтения большого файла.

Усовершенствованные алгоритмы поиска.

Не будем касаться алгоритмов, использующихся поисковыми машинами (Яндекс, Рамблер). Для отдельно взятого сайта разработка сложного алгоритма поиска будет сопоставима со стоимостью разработки самого сайта, а может и превышать ее в разы.

Как можно усовершенствовать алгоритм поиска по сайту?

  • Использовать логические операторы AND, OR, NOT для поисковых слов.
  • Использовать различные области поиска целевого запроса: заголовки, мета, содержание, картинки.
  • Использовать поиск в найденном: формирование промежуточных индексных баз.
  • Использовать весовые коэффициенты для ранжирования поисковых результатов:
  • Точное совпадение, максимальная релевантность целевому запросу.
  • Точное совпадение, минимальная релевантность целевому запросу.
  • Неточное совпадение.

Усовершенствований может быть гораздо больше. Всё зависит от конкретного сайта, поисковых потребностей пользователей, возможностей программистов и финансирования разработки.

В заключении, можно посмотреть работу поискового алгоритма "SP-Поиск", основанного на индексной базе, с использованием логических операторов AND и OR, и ранжированием по точному/неточному совпадению целевого запроса в записях индексной базы.


Apache — это кросплатформаенное программное обеспечение, относящееся к классу http-серверов. Поддерживается множеством операционных систем: Windows, Linux, MacOS и т.д. Одним из ключевых факторов в вопросе использования данного web-сервера является гибкость настройки и надежность выполнения операций. Apache включает в себя множество дополнительных модулей, позволяющих работать с различными базами данных, контролировать аутентификацию пользователей и т.д.

Интересные материалы на сайте:

Автор, разработчик: Шаров Евгений   (gcmsite@yandex.ru)
(c) 2000-2020 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки