|
|
|||||||||||||||||||||||||||||
|
Сделайте ваши страницы 404 интеллектуальными при помощи сопоставления метафонов (исходники)Источник: IBM developerWorks Россия Натан Хэррингтон, IBM
Существует много учебных руководств, демонстрирующих, как создать эффективно действующую страницу 404. Большинство из них предлагает статические ссылки, ведущие на общие разделы вашего сайта, такие как стартовая страница, страница материалов для загрузки или поисковый механизм при его наличии. Проблема стандартной страницы 404 заключается в том, что она не учитывает причину, по которой пользователь зашел на сайт. В данной статье рассказывается, как реализовать механизм формирования предположений и описывается метод предоставления полезных ссылок для перенаправления, которые основаны на содержимом Web-сайта. Современные обработчики 404 ошибки позволяют предоставлять несколько ссылок для всех ошибок, например, указывая пользователям каталог сайта. Орфографические корректоры, такие как mod_speling (да-да, здесь именно одна "l") можно использовать для исправления ошибок в словах словаря, что может помочь пользователю попасть на правильную страницу. Приведенный здесь исходный код поможет вам построить механизм создания предложений для обработки слов не из словаря и ссылок на каталоги на основе содержимого Web-сайта. Допустим, например, что вы услышали название Web-страницы во время телеконференции и пробуете ссылку blegs/DavSmath.html. В данной ситуации имеющиеся модули орфографической коррекции не смогут предоставить полезную ссылку. Используя исходный код из этой статьи, вы сможете сгенерировать страницу 404, предлагающую правильный вариант адреса страницы - /blogs/DaveSmith.html. ТребованияЛюбой современный персональный компьютер, произведенный после 2000 года, имеет достаточную производительность для компиляции и выполнения приведенного в данной статье кода. Возможно, вам понадобится больше оперативной памяти, более производительное аппаратное обеспечение или же терпение, если ваш Web-сайт содержит более 10000 различных страниц. Приведенные Perl- и CGI-сценарии работают на различных версиях UNIX и Windows. Хотя в данной статье используется Apache и CGI-сценарий для механизма формирования предложений, встроенные инструментальные средства должны работать с большинством Web-серверов. Для сопоставления метафонов (metaphone) в данной статье используется модуль Майкла Шверна (Michael Schwern) Text::Metaphone. Установите модуль Text::Metaphone с любого зеркала CPAN, и вы будете готовы начать работу. Страницы Web-сервера и коды метафоновГлавным методом, который мы будем использовать для предложения альтернатив при опечатках и орфографических ошибках будет сопоставление метафонов. Алгоритм Metaphones, аналогично Soundex и другим подобным алгоритмам, использует алфавитно-цифровой код для представления вербального произношения слова. Однако, в отличие от Soundex, при создании кодов метафонов учитывалось лингвистическое разнообразие произношения в английском языке. Следовательно, средний код метафона является намного более точным представлением данного слова и идеальной основой для построения библиотеки предложений. Рассмотрим следующий список файлов в примере каталога Web-сервера.
При работе с этим набором статических HTML-файлов мы будем использовать программу buildMetaphoneList.pl для создания метафонов для каждого имени файла с расширением .html. Листинг 2. buildMetaphoneList.pl
Программа buildMetaphoneList.pl обрабатывает файлы только с расширением .html, удаляет .html из названия, затем генерирует метафоны для каждой части полного имени пути. Скопируйте программу buildMetaPhoneList.pl в корневой каталог вашего Web-сервера и выполните команду Листинг 3. metaphonesScore.txt
В каждой строке листинга 3 имеется реальная ссылка относительно корневого каталога Web-сервера, вес по умолчанию и код метафона. Обратите внимание на то, что how.html, why.html и who.html имеют один и тот же код метафона. Для исправления этой неоднозначности измените поле веса, чтобы программа предложения ссылок предоставляла ссылки в желаемом порядке. Например, измените записи с кодом метафона "H" на:
Таким образом задается прямая сортировка ссылок, при этом остается возможность последующих модификаций значений веса. Большие значения весов удобны, т.к. учитывают возможность последующей вставки файлов с одинаковыми кодами метафона, но с разными весами. Например, добавляя файл hoo.html в список, можно было бы использовать вес 25, чтобы данная ссылка располагалась выше записи who.html и ниже записи why.html. Вы можете также использовать поле значений веса, чтобы различать файлы с одинаковым именем, но из разных каталогов. Измените вес в строке ./NathanHarrington.html на 100, например, и при запросе страницы nathenHorrington.html в списке отобразится ссылка на ./NathanHarrington.html перед ./blogs/NathanHarrington.html. При выборе весов ваших файлов учитывайте статистические и логические компоненты доступа вашего Web-сайта. Пользователи могут чаще запрашивать страницу why.html согласно log-файлам, но если вы знаете, что более важной для них является страница how.html, просто укажите соответствующие веса для корректной сортировки. Создание CGI-обработчика 404Имея соответствующие метафоны, сгенерированные вместе со своими весовыми коэффициентами, мы можем создать действующий модуль выдачи предложений. Обычно сообщение об ошибке 404 выдается из-за опечаток в ссылке или из-за неправильности самой ссылки. Предложения, генерируемые приведенным ниже кодом, будут создаваться при выполнении трех основных тестов: соответствие заданной структуре каталогов, соответствие комбинированному метафону и соответствие "включению", когда все остальные тесты неудачны. Эти три теста предназначены для обработки большинства ошибок 404. Начало Perl-сценария MetaphoneSuggest CGI приведено ниже. Листинг 4. MetaphoneSuggest CGI, часть 1
После обычных включений библиотек и объявлений переменных код будет загружать текст 404, а также метафоны, созданные при помощи программы buildMetaphoneList.pl. Теперь мы готовы перейти к логике основной программы, как показано ниже. Листинг 5. Логика основной программы
Вывод каждого раздела совпадающего тестового кода сортируется, а затем добавляется в общий список предложений. После сортировки и уникальной идентификации списка ссылок вывод предлагаемых ссылок не сложен. Три команды сортировки, помещенные в один массив результатов, предназначены для создания упорядоченного и отсортированного по номеру списка предложений. Весьма вероятно, что при возникновении 404-й ошибки наличие разделителей каталогов говорит о том, что искомая Web-страница находится как минимум на один уровень вниз по дереву каталогов. Возьмем, к примеру, запрос страницы bloggs/nathenherringtoon.html. Вызов directorySplitTest создаст отсортированный список страниц, имеющих совпадение метафонов для BLKS и N0NHRNKTN в соседних по уровню вложенности каталогах. Такая стратегия обеспечивает необходимое различие между файлами в корневом каталоге, например, blogs.html и nathanharrington.html, и страницами с полным именем пути blogs/nathanharrington.html. В приведенном ниже листинге показано содержимое подпрограммы directorySplitTest. Листинг 6. Подпрограмма directorySplitTest
После Листинг 7. Подпрограмма combinedTest
После Листинг 8. Подпрограммы sortResults и containsTest
Изменение файла Apache httpd.confСценарий MetaphoneSuggest является сценарием cgi-bin, вызываемым из Apache. Чтобы вместо страницы ошибки 404 выполнялся сценарий MetaphoneSuggest, необходимо внести изменения в файл httpd.conf. Например, если ваш файл httpd.conf по умолчанию имеет раздел: Листинг 9. Раздел httpd.conf по умолчанию
вставьте строку Варианты реализации и практические соображенияПри использовании инструментальных средств, описанных в программе MetaphoneSuggest, помните о том, что страница 404 - это состояние ошибки. Предоставляйте только несколько альтернатив и не усложняйте дизайн. Спросите у знатоков Web-дизайна, почему они не предоставляют автоматические предложения ссылок, или посоветуйтесь, как лучше реализовать средство предложения ссылок на вашем сайте. В данной статье рассмотрены инструментальные средства и код, необходимый для создания вариантов предложений полезных ссылок на странице 404. При их реализации у вас появляется возможность предоставить больше чем просто ссылки на каталоги или предложения по орфографии. Настроенная на конкретные сайты или содержимое тупиковая прежде страница 404 может остаться в прошлом. Файлы для загрузки
|
|