Канонизация - Canonicalization

В Информатика, канонизация (иногда стандартизация или нормализация) - это процесс преобразования данные который имеет более одного возможного представления в виде "стандартного", "нормального" или каноническая форма. Это может быть сделано для сравнения различных представлений на эквивалентность, для подсчета количества различных структур данных, для повышения эффективности различных алгоритмы исключив повторные вычисления или сделав возможным наложение значимых сортировка порядок.

Случаи использования

Имена файлов

Файлы в файловые системы в большинстве случаев можно получить доступ через несколько имена файлов. Например, в Unix -подобные системы, струна »/./"можно заменить на"/". В Стандартная библиотека C, функция realpath () выполняет эту задачу. Другие операции, выполняемые этой функцией для канонизации имен файлов, - это обработка /.. компоненты, относящиеся к родительским каталогам, упрощение последовательностей нескольких косых черт, удаление конечных косых черт и разрешение символические ссылки.

Канонизация имен файлов важна для компьютерной безопасности. Например, веб-сервер может иметь ограничение, что только файлы в каталоге cgi C: inetpub wwwroot cgi-bin могут быть выполнены. Это правило реализуется путем проверки того, что путь начинается с C: inetpub wwwroot cgi-bin и только потом его исполнять. Пока файл C: inetpub wwwroot cgi-bin .. .. .. Windows System32 cmd.exe изначально кажется, что находится в каталоге cgi, он использует .. спецификатор пути для обхода резервной копии иерархии каталогов в попытке выполнить файл за пределами cgi-bin. Разрешение cmd.exe выполнение будет ошибкой, вызванной неспособностью канонизировать имя файла до простейшего представления, C: Windows System32 cmd.exe, и называется обход каталога уязвимость. Когда путь канонизирован, ясно, что файл не должен выполняться.

Unicode

В Unicode, многие буквы с диакритическими знаками могут быть представлены более чем одним способом. Например, é может быть представлен в Юникоде как символ Юникода U + 0065 (СТРОЧНАЯ ЛАТИНСКАЯ БУКВА E), за которым следует символ U + 0301 (КОМБИНИРОВАНИЕ ОСТРОГО ДИСКА), но он также может быть представлен как предварительно составленный символ U + 00E9 (СТРОЧНАЯ ЛАТИНСКАЯ БУКВА E С ОСТРЫЙ). Это усложняет сравнение строк, поскольку необходимо учитывать все возможные представления строки, содержащей такие глифы. Чтобы справиться с этим, Unicode предоставляет механизм каноническая эквивалентность. В этом контексте канонизация - это Юникод нормализация.

Кодировки переменной ширины в стандарте Unicode, в частности UTF-8, в некоторых ситуациях может потребоваться дополнительная канонизация. А именно, по стандарту в UTF-8 есть только одна допустимая последовательность байтов для любого символа Unicode,[1] но некоторые байтовые последовательности недействительны, т.е. е. не может быть получен путем кодирования любой строки символов Unicode в UTF-8. Некоторые неаккуратные реализации декодера могут принимать недопустимые последовательности байтов в качестве входных и выдавать допустимый символ Юникода в качестве выходных данных для такой последовательности. Если использовать такой декодер, некоторые символы Unicode фактически будут иметь более одной соответствующей последовательности байтов: действительную и некоторые недопустимые. Это может привести к проблемам с безопасностью, аналогичным описанным в предыдущем разделе. Следовательно, если кто-то хочет применить какой-либо фильтр (например, регулярное выражение, записанное в UTF-8) к строкам UTF-8, которые позже будут переданы декодеру, который допускает недопустимые последовательности байтов, следует канонизировать строки, прежде чем передавать их фильтру. . В этом контексте канонизация - это процесс преобразования каждого строкового символа в его единственную допустимую последовательность байтов. Альтернативой канонизации является отклонение любых строк, содержащих недопустимые последовательности байтов.

URL

А канонический URL это URL для определения единственный источник истины за дублированный контент.

Использование Google

Канонический URL-адрес - это URL-адрес страницы, которая, по мнению Google, является наиболее репрезентативной из набора повторяющихся страниц на вашем сайте. Например, если у вас есть URL-адреса для одной и той же страницы (например, example.com?dress=1234 и example.com/dresses/1234), Google выбирает один из них как канонический. Обратите внимание, что страницы не обязательно должны быть абсолютно идентичными; незначительные изменения в сортировке или фильтрации страниц списка не делают страницу уникальной (например, сортировка по цене или фильтрация по цвету элемента).

Канонический может находиться не в одном домене, а в другом домене.[2]

Поисковые системы могут рассматривать URL как повторяющийся по разным причинам. Например

  • www.example.com
  • https://example.com
  • https://www.example.com

Все эти три являются одинаковыми URL-адресами, которые могут иметь похожий контент, но Google может считать их дубликатами. Добавление Канонический URL на исходной странице может решить эту проблему.

Интернет

С помощью канонических URL-адресов поисковая система знает, какая ссылка должна быть предоставлена ​​в результате запроса.

А канонический элемент ссылки можно привыкнуть определять канонический URL.

Интранет

В интрасети, преобладает ручной поиск информации. В этом случае канонические URL-адреса также могут быть определены в не машиночитаемой форме. Например, в руководство.

Разное

Канонические URL-адреса обычно представляют собой URL-адреса, которые используются для поделиться действием.

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

Поисковые системы и SEO

В веб-поиске и поисковая оптимизация (SEO), Канонизация URL имеет дело с веб-контентом, у которого есть несколько возможных URL. Наличие нескольких URL-адресов для одного и того же веб-содержимого может вызвать проблемы для поисковых систем, особенно при определении того, какой URL-адрес должен отображаться в результатах поиска.[3] Большинство поисковых систем поддерживают Канонический элемент ссылки в качестве подсказки, какой URL следует рассматривать как истинную версию. Как указал Джон Мюллер из Google, наличие на странице других директив, например роботы noindex может дать поисковым системам противоречивые сигналы о том, как обрабатывать канонизацию [4]

Пример:

Все эти URL-адреса указывают на домашнюю страницу Википедии, но поисковая система будет рассматривать только один из них как каноническую форму URL-адреса.

XML

А Канонический XML документ по определению является XML-документом в канонической форме XML, определяемой Спецификация канонического XML. Вкратце, канонизация удаляет пробелы в тегах, использует определенные кодировки символов, сортирует ссылки на пространства имен и удаляет избыточные, удаляет объявления XML и DOCTYPE и преобразует относительные URI в абсолютные URI.

Простым примером могут быть следующие два фрагмента XML:

  1. <node1 x='1' a="1" a="2">Data</node1    > <node2>Data</node2>
  2. <node1 a="2" x="1">Data</node1> <node2>Data</node2>

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

Полный список изменений канонизации приведен ниже:

  • Документ закодирован в UTF-8
  • Разрывы строк нормализованы до #xA при вводе перед синтаксическим анализом
  • Значения атрибутов нормализованы, как если бы проверяющий процессор
  • Ссылки на символы и проанализированные сущности заменяются
  • Разделы CDATA заменяются их символьным содержимым
  • Объявление XML и объявление типа документа удаляются.
  • Пустые элементы преобразуются в пары начальных и конечных тегов
  • Пробелы вне элемента документа и внутри начального и конечного тегов нормализованы.
  • Все пробелы в содержании символов сохраняются (за исключением символов, удаленных во время нормализации перевода строки)
  • Разделители значений атрибутов устанавливаются в кавычки (двойные кавычки)
  • Специальные символы в значениях атрибутов и содержании символов заменяются ссылками на символы
  • Излишние объявления пространств имен удаляются из каждого элемента
  • Атрибуты по умолчанию добавляются к каждому элементу
  • Ремонт xml: base атрибуты выполняется
  • Лексикографический порядок налагается на объявления пространств имен и атрибуты каждого элемента.

Компьютерная лингвистика

В морфология и лексикография, а лемма это каноническая форма набора слова. В английский, Например, пробег, бежит, побежал и Бег формы одного и того же лексема, поэтому мы можем выбрать один из них, например. пробег, чтобы представить все формы. Лексические базы данных, такие как Unitex используйте такое представление.

Лемматизация это процесс преобразования слова в его каноническая форма.

Смотрите также

Рекомендации

  1. ^ RFC 2279: UTF-8, формат преобразования ISO 10646
  2. ^ https://support.google.com/webmasters/answer/139066?hl=en
  3. ^ Каттс, Мэтт (4 января 2006 г.). "Совет по SEO: канонизация URL". Мэтт Каттс: гаджеты, Google и SEO. Получено 3 сентября 2013.
  4. ^ "Канонизированный URL - noindex, nofollow". Получено 2020-04-20.

внешняя ссылка