stringtranslate.com

Индексация поисковой системы

Индексация поисковой системы — это сбор, анализ и хранение данных для облегчения быстрого и точного поиска информации . Проектирование индекса включает в себя междисциплинарные концепции из лингвистики , когнитивной психологии , математики, информатики и компьютерных наук . Альтернативное название этого процесса в контексте поисковых систем , предназначенных для поиска веб-страниц в Интернете, — веб-индексация .

Популярные поисковые системы фокусируются на полнотекстовой индексации онлайн- документов на естественном языке . [1] Такие типы медиа , как изображения, видео, [2] аудио, [3] и графика [4] также доступны для поиска.

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

Индексация

Целью хранения индекса является оптимизация скорости и производительности при поиске соответствующих документов для поискового запроса. Без индекса поисковая система сканировала бы каждый документ в корпусе , что потребовало бы значительного времени и вычислительной мощности. Например, в то время как индекс из 10 000 документов может быть запрошен в течение миллисекунд, последовательное сканирование каждого слова в 10 000 больших документах может занять часы. Дополнительное хранилище компьютера, необходимое для хранения индекса, а также значительное увеличение времени, необходимого для обновления, компенсируются временем, сэкономленным при поиске информации.

Факторы проектирования индекса

Основные факторы при проектировании архитектуры поисковой системы включают в себя:

Факторы слияния
Как данные попадают в индекс, или как слова или тематические признаки добавляются в индекс во время обхода текстового корпуса, и могут ли несколько индексаторов работать асинхронно. Индексатор должен сначала проверить, обновляет ли он старый контент или добавляет новый. Обход обычно коррелирует с политикой сбора данных . Объединение индексов поисковой системы по своей концепции похоже на команду SQL Merge и другие алгоритмы объединения. [5]
Методы хранения
Как хранить данные индекса , то есть следует ли сжимать или фильтровать информацию.
Размер индекса
Какой объем памяти компьютера необходим для поддержки индекса.
Скорость поиска
Насколько быстро можно найти слово в инвертированном индексе . Скорость нахождения записи в структуре данных по сравнению с тем, насколько быстро ее можно обновить или удалить, является центральным направлением компьютерной науки.
Обслуживание
Как индекс поддерживается с течением времени. [6]
Отказоустойчивость
Насколько важно, чтобы сервис был надежным. Проблемы включают в себя борьбу с повреждением индекса, определение того, можно ли обрабатывать плохие данные изолированно, борьбу с плохим оборудованием, разбиение на разделы и такие схемы, как разбиение на основе хэша или составное разбиение, [7] а также репликацию .

Индексные структуры данных

Архитектуры поисковых систем различаются по способу выполнения индексации и методам хранения индексов в целях соответствия различным факторам проектирования.

Дерево суффиксов
Образно структурированный как дерево, поддерживает линейный поиск по времени. Создается путем хранения суффиксов слов. Дерево суффиксов является типом trie . Trie поддерживают расширяемое хеширование , что важно для индексации поисковой системой. [8] Используется для поиска шаблонов в последовательностях ДНК и кластеризации. Основным недостатком является то, что хранение слова в дереве может потребовать больше места, чем требуется для хранения самого слова. [9] Альтернативным представлением является массив суффиксов , который, как считается, требует меньше виртуальной памяти и поддерживает сжатие данных, такое как алгоритм BWT .
Перевернутый индекс
Сохраняет список вхождений каждого атомарного критерия поиска, [10] как правило, в форме хэш-таблицы или двоичного дерева . [11] [12]
Индекс цитирования
Сохраняет цитаты или гиперссылки между документами для поддержки анализа цитирования, являющегося предметом библиометрии .
индекс n -грамма
Сохраняет последовательности данных разной длины для поддержки других типов поиска или анализа текста . [13]
Матрица «документ-термин»
Используется в латентном семантическом анализе, сохраняет вхождения слов в документах в двумерной разреженной матрице .

Проблемы параллелизма

Основной проблемой при проектировании поисковых систем является управление последовательными вычислительными процессами. Существует множество возможностей для состояний гонки и когерентных сбоев. Например, новый документ добавляется в корпус, и индекс должен быть обновлен, но индекс одновременно должен продолжать отвечать на поисковые запросы. Это столкновение двух конкурирующих задач. Учтите, что авторы являются производителями информации, а веб-сканер является потребителем этой информации, захватывая текст и сохраняя его в кэше (или корпусе ). Прямой индекс является потребителем информации, произведенной корпусом, а инвертированный индекс является потребителем информации, произведенной прямым индексом. Это обычно называют моделью производитель-потребитель . Индексатор является производителем доступной для поиска информации, а пользователи являются потребителями, которым необходимо выполнять поиск. Проблема усиливается при работе с распределенным хранилищем и распределенной обработкой. В попытке масштабироваться с большими объемами индексированной информации архитектура поисковой системы может включать распределенные вычисления , где поисковая система состоит из нескольких машин, работающих в унисон. Это увеличивает вероятность возникновения непоследовательности и затрудняет поддержание полностью синхронизированной, распределенной, параллельной архитектуры. [14]

Инвертированные индексы

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

Этот индекс может только определить, существует ли слово в определенном документе, поскольку он не хранит никакой информации о частоте и положении слова; поэтому он считается булевым индексом. Такой индекс определяет, какие документы соответствуют запросу, но не ранжирует соответствующие документы. В некоторых проектах индекс включает дополнительную информацию, такую ​​как частота каждого слова в каждом документе или положение слова в каждом документе. [15] Информация о положении позволяет алгоритму поиска определять близость слов для поддержки поиска фраз; частота может использоваться для помощи в ранжировании релевантности документов запросу. Такие темы являются центральным направлением исследований поиска информации .

Инвертированный индекс представляет собой разреженную матрицу , поскольку не все слова присутствуют в каждом документе. Чтобы снизить требования к памяти для хранения компьютера , он хранится иначе, чем двумерный массив . Индекс похож на матрицы терминов документов, используемые в латентном семантическом анализе . Инвертированный индекс можно считать формой хэш-таблицы. В некоторых случаях индекс представляет собой форму двоичного дерева , которое требует дополнительного хранилища, но может сократить время поиска. В более крупных индексах архитектура обычно представляет собой распределенную хэш-таблицу . [16]

Реализация поиска фраз с использованием инвертированного индекса

Для поиска фраз используется специализированная форма инвертированного индекса, называемая позиционным индексом. Позиционный индекс не только хранит идентификатор документа, содержащего токен, но и точную позицию(и) токена в документе в списке постов . Вхождения фразы, указанной в запросе, извлекаются путем навигации по этим спискам постов и определения индексов, в которых искомые термины встречаются в ожидаемом порядке (таком же, как и порядок во фразе). Таким образом, если мы ищем вхождения фразы «First Witch», мы должны:

  1. Получить список сообщений для "first" и "witch"
  2. Определите, когда слово «ведьма» появляется в первый раз после слова «первый»
  3. Проверьте, что это событие произошло сразу после события «first».
  4. Если нет, переходите к следующему вхождению слова «first».

Списки сообщений можно просматривать с помощью бинарного поиска, чтобы минимизировать временную сложность этой процедуры. [17]

Слияние индексов

Инвертированный индекс заполняется посредством слияния или перестроения. Перестроение похоже на слияние, но сначала удаляет содержимое инвертированного индекса. Архитектура может быть разработана для поддержки инкрементального индексирования, [18] где слияние идентифицирует документ или документы, которые должны быть добавлены или обновлены, а затем разбирает каждый документ на слова. Для технической точности слияние объединяет недавно проиндексированные документы, обычно находящиеся в виртуальной памяти, с кэшем индекса, находящимся на одном или нескольких жестких дисках компьютера.

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

Форвардный индекс

Прямой индекс хранит список слов для каждого документа. Ниже приведена упрощенная форма прямого индекса:

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

Сжатие

Создание или поддержка крупномасштабного индекса поисковой системы представляет собой значительную проблему хранения и обработки. Многие поисковые системы используют форму сжатия для уменьшения размера индексов на диске . [20] Рассмотрим следующий сценарий для полнотекстовой поисковой системы в Интернете.

При таком сценарии несжатый индекс (предполагая, что это не объединенный , простой индекс) для 2 миллиардов веб-страниц должен хранить 500 миллиардов записей слов. При 1 байте на символ или 5 байтах на слово это потребует 2500 гигабайт дискового пространства. [ требуется цитата ] Это требование к пространству может быть даже больше для отказоустойчивой распределенной архитектуры хранения. В зависимости от выбранного метода сжатия индекс может быть уменьшен до доли этого размера. Компромисс заключается во времени и вычислительной мощности, необходимых для выполнения сжатия и распаковки. [ требуется цитата ]

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

Анализ документа

Анализ документа разбивает компоненты (слова) документа или другой формы носителя для вставки в прямые и обратные индексы. Найденные слова называются токенами , и поэтому в контексте индексации поисковой системы и обработки естественного языка анализ чаще называют токенизацией . Иногда его также называют устранением неоднозначности границ слов, тегированием , сегментацией текста , анализом контента , анализом текста, добычей текста , генерацией конкорданса , сегментацией речи , лексическим анализом или лексическим анализом . Термины «индексирование», «парсинг» и «токенизация» используются взаимозаменяемо в корпоративном сленге.

Обработка естественного языка является предметом постоянных исследований и технологических улучшений. Токенизация представляет множество проблем при извлечении необходимой информации из документов для индексации с целью поддержки качественного поиска. Токенизация для индексации включает в себя несколько технологий, реализация которых обычно хранится как корпоративная тайна. [ необходима цитата ]

Проблемы обработки естественного языка

Неоднозначность границ слов
Носители английского языка могут поначалу считать токенизацию простой задачей, но это не относится к проектированию многоязычного индексатора. В цифровой форме тексты других языков, таких как китайский или японский, представляют собой большую проблему, поскольку слова не четко обозначены пробелами . Целью токенизации является определение слов, которые пользователи будут искать. Для правильного определения границ слов используется логика, специфичная для языка, что часто является обоснованием для проектирования парсера для каждого поддерживаемого языка (или для групп языков со схожими маркерами границ и синтаксисом).
Неоднозначность языка
Чтобы помочь с правильным ранжированием соответствующих документов, многие поисковые системы собирают дополнительную информацию о каждом слове, такую ​​как его язык или лексическая категория ( часть речи ). Эти методы зависят от языка, поскольку синтаксис различается в разных языках. Документы не всегда четко определяют язык документа или представляют его точно. При токенизации документа некоторые поисковые системы пытаются автоматически определить язык документа.
Различные форматы файлов
Чтобы правильно определить, какие байты документа представляют символы, формат файла должен быть правильно обработан. Поисковые системы, которые поддерживают несколько форматов файлов, должны иметь возможность правильно открывать и получать доступ к документу, а также иметь возможность токенизировать символы документа.
Неисправное хранилище
Качество данных на естественном языке не всегда может быть идеальным. Неопределенное количество документов, особенно в Интернете, не строго следуют надлежащему протоколу файла. Двоичные символы могут быть ошибочно закодированы в различных частях документа. Без распознавания этих символов и соответствующей обработки качество индекса или производительность индексатора могут ухудшиться.

Токенизация

В отличие от грамотных людей, компьютеры не понимают структуру документа на естественном языке и не могут автоматически распознавать слова и предложения. Для компьютера документ — это всего лишь последовательность байтов. Компьютеры не «знают», что пробел разделяет слова в документе. Вместо этого люди должны запрограммировать компьютер на определение того, что составляет отдельное или отдельное слово, называемое токеном. Такая программа обычно называется токенизатором , парсером или лексером . Многие поисковые системы, а также другое программное обеспечение для обработки естественного языка включают специализированные программы для синтаксического анализа, такие как YACC или Lex .

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

Распознавание языка

Если поисковая система поддерживает несколько языков, то общим начальным шагом во время токенизации является определение языка каждого документа; многие из последующих шагов зависят от языка (например, морфология и разметка частей речи ). Распознавание языка — это процесс, с помощью которого компьютерная программа пытается автоматически определить или классифицировать язык документа. Другие названия распознавания языка включают классификацию языка, анализ языка, идентификацию языка и разметку языка. Автоматическое распознавание языка является предметом текущих исследований в области обработки естественного языка . Определение того, к какому языку относятся слова, может включать использование таблицы распознавания языка .

Анализ формата

Если поисковая система поддерживает несколько форматов документов , документы должны быть подготовлены для токенизации. Проблема в том, что многие форматы документов содержат информацию о форматировании в дополнение к текстовому содержимому. Например, документы HTML содержат теги HTML, которые определяют информацию о форматировании, такую ​​как начало новой строки, жирное выделение и размер или стиль шрифта . Если бы поисковая система игнорировала разницу между содержимым и «разметкой», в индекс была бы включена посторонняя информация, что привело бы к плохим результатам поиска. Анализ формата — это идентификация и обработка содержимого форматирования, встроенного в документы, которое управляет тем, как документ отображается на экране компьютера или интерпретируется программой. Анализ формата также называется структурным анализом, синтаксическим анализом формата, удалением тегов, удалением формата, нормализацией текста, очисткой текста и подготовкой текста. Проблема анализа формата еще больше усложняется сложностью различных форматов файлов. Некоторые форматы файлов являются фирменными, и раскрывается очень мало информации, в то время как другие хорошо документированы. Распространенные, хорошо документированные форматы файлов, которые поддерживают многие поисковые системы, включают:

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

Некоторые поисковые системы поддерживают проверку файлов, которые хранятся в сжатом или зашифрованном формате. При работе со сжатым форматом индексатор сначала распаковывает документ; этот шаг может привести к одному или нескольким файлам, каждый из которых должен быть проиндексирован отдельно. Обычно поддерживаемые сжатые форматы файлов включают:

Анализ формата может включать методы улучшения качества, чтобы избежать включения «плохой информации» в индекс. Контент может манипулировать информацией о форматировании, чтобы включить дополнительный контент. Примеры злоупотребления форматированием документа для спамдексинга :

Раздел распознавания

Некоторые поисковые системы включают распознавание разделов, идентификацию основных частей документа, до токенизации. Не все документы в корпусе читаются как хорошо написанная книга, разделенная на организованные главы и страницы. Многие документы в Интернете , такие как информационные бюллетени и корпоративные отчеты, содержат ошибочный контент и побочные разделы, которые не содержат основного материала (того, о чем документ). Например, статьи на веб-сайте Wikipedia отображают боковое меню со ссылками на другие веб-страницы. Некоторые форматы файлов, такие как HTML или PDF, позволяют отображать контент в столбцах. Несмотря на то, что контент отображается или отображается в разных областях представления, необработанный контент разметки может хранить эту информацию последовательно. Слова, которые последовательно появляются в исходном контенте, индексируются последовательно, даже если эти предложения и абзацы отображаются в разных частях экрана компьютера. Если поисковые системы индексируют этот контент, как если бы это был обычный контент, качество индекса и качество поиска могут ухудшиться из-за смешанного контента и неправильной близости слов. Отмечены две основные проблемы:

Анализ раздела может потребовать от поисковой системы реализации логики рендеринга каждого документа, по сути абстрактного представления фактического документа, а затем индексации представления вместо этого. Например, некоторый контент в Интернете рендерится с помощью JavaScript. Если поисковая система не рендерит страницу и не оценивает JavaScript на странице, она не «увидит» этот контент таким же образом и неправильно проиндексирует документ. Учитывая, что некоторые поисковые системы не беспокоятся о проблемах рендеринга, многие разработчики веб-страниц избегают отображения контента с помощью JavaScript или используют тег Noscript, чтобы гарантировать, что веб-страница будет проиндексирована должным образом. В то же время этот факт также может быть использован для того, чтобы заставить индексатор поисковой системы «увидеть» другой контент, чем зритель.

Система приоритетов HTML

Индексация часто должна распознавать HTML- теги для организации приоритета. Индексация низкого приоритета к высокому полю к меткам типа strong и link для оптимизации порядка приоритета, если эти метки находятся в начале текста, может оказаться нерелевантной. Некоторые индексаторы, такие как Google и Bing, гарантируют, что поисковая система не будет считать большие тексты релевантным источником из-за совместимости с сильной системой типов. [23]

Индексация метатегов

Индексация метатегов играет важную роль в организации и категоризации веб-контента. Определенные документы часто содержат встроенную метаинформацию, такую ​​как автор, ключевые слова, описание и язык. Для HTML-страниц метатег содержит ключевые слова, которые также включены в индекс. Ранее технология поисковых систем в Интернете индексировала только ключевые слова в метатегах для прямого индекса; полный документ не анализировался. В то время полнотекстовая индексация не была так хорошо развита, и компьютерное оборудование не могло поддерживать такую ​​технологию. Дизайн языка разметки HTML изначально включал поддержку метатегов именно для того, чтобы быть правильно и легко индексированным, без необходимости токенизации. [24]

По мере развития Интернета в 1990-х годах многие традиционные корпорации выходили в «онлайн» и создавали корпоративные веб-сайты. Ключевые слова, используемые для описания веб-страниц (многие из которых были ориентированными на корпорации веб-страницами, похожими на брошюры о продуктах), изменились с описательных на маркетинговые ключевые слова, предназначенные для стимулирования продаж путем размещения веб-страницы высоко в результатах поиска по определенным поисковым запросам. Тот факт, что эти ключевые слова были указаны субъективно, привел к спамдексингу , который заставил многие поисковые системы принять технологии полнотекстовой индексации в 1990-х годах. Разработчики и компании поисковых систем могли поместить только определенное количество «маркетинговых ключевых слов» в контент веб-страницы, прежде чем высосать из нее всю интересную и полезную информацию. Учитывая этот конфликт интересов с бизнес-целью разработки ориентированных на пользователя веб-сайтов, которые были «липкими», уравнение ценности пожизненного обслуживания клиента было изменено, чтобы включить в веб-сайт больше полезного контента в надежде удержать посетителя. В этом смысле полнотекстовая индексация была более объективной и повышала качество результатов поисковой системы, поскольку она была еще на один шаг дальше от субъективного контроля размещения результатов поисковой системы, что, в свою очередь, способствовало исследованию технологий полнотекстовой индексации.

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

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

Ссылки

  1. ^ Кларк, К., Кормак, Г.: Динамические инвертированные индексы для распределенной полнотекстовой поисковой системы. TechRep MT-95-01, Университет Ватерлоо, февраль 1995 г.
  2. ^ Sikos, LF (август 2016 г.). «Семантические инструменты аннотации видео на основе RDF с отображением концепций в связанных данных для индексации видео следующего поколения». Мультимедийные инструменты и приложения . doi :10.1007/s11042-016-3705-7. S2CID  254832794.[ постоянная мертвая ссылка ]
  3. ^ http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf [ пустой URL-адрес PDF ]
  4. ^ Чарльз Э. Джейкобс, Адам Финкельштейн, Дэвид Х. Сейлзин. Быстрый запрос изображений с несколькими разрешениями. Кафедра компьютерных наук и техники, Вашингтонский университет. 1995. Проверено в декабре 2006 г.
  5. ^ Браун, Э. У.: Проблемы производительности выполнения при поиске полнотекстовой информации. Кафедра компьютерных наук, Массачусетский университет в Амхерсте, Технический отчет 95-81, октябрь 1995 г.
  6. ^ Каттинг, Д., Педерсен, Дж.: Оптимизации для поддержания динамического инвертированного индекса. Труды SIGIR, 405-411, 1990.
  7. ^ Линейное хэш-разбиение. Справочное руководство MySQL 5.1. Проверено в декабре 2006 г.
  8. ^ trie, Словарь алгоритмов и структур данных, Национальный институт стандартов и технологий США.
  9. ^ Гасфилд, Дэн (1999) [1997]. Алгоритмы на строках, деревьях и последовательностях: информатика и вычислительная биология . США: Cambridge University Press. ISBN 0-521-58519-8..
  10. ^ Блэк, Пол Э., инвертированный индекс, Словарь алгоритмов и структур данных, Национальный институт стандартов и технологий США, октябрь 2006 г. Проверено в декабре 2006 г.
  11. ^ CC Foster, Информационный поиск: хранение и поиск информации с использованием AVL-деревьев, Труды 20-й национальной конференции 1965 года, стр. 192-205, 24–26 августа 1965 года, Кливленд, Огайо, США.
  12. ^ Ландауэр, Висконсин: Сбалансированное дерево и его использование в информационном поиске. IEEE Trans. on Electronic Computers, Vol. EC-12, No. 6, декабрь 1963 г.
  13. ^ Наборы данных Google Ngram, заархивированные 29.09.2013 на Wayback Machine, продаются в каталоге LDC
  14. ^ Джеффри Дин и Санджай Гемават. MapReduce: упрощенная обработка данных на больших кластерах. Google, Inc. OSDI. 2004.
  15. ^ Гроссман, Фридер, Гохариан. IR Basics of Inverted Index. 2002. Проверено в августе 2011.
  16. ^ Тан, Хуньцян. Дваракадас, Сандхья . «Гибридное глобальное локальное индексирование для эффективного однорангового поиска информации». Университет Рочестера. Стр. 1. http://www.cs.rochester.edu/u/sandhya/papers/nsdi04.ps
  17. ^ Büttcher, Stefan; Clarke, Charles LA; Cormack, Gordon V. (2016). Информационный поиск: внедрение и оценка поисковых систем (Первое издание MIT Press в мягкой обложке). Кембридж, Массачусетс, Лондон, Англия: MIT Press. ISBN 978-0-262-52887-0.
  18. ^ Томасич, А. и др.: Инкрементные обновления инвертированных списков для поиска текстовых документов. Краткая версия Технической заметки по компьютерным наукам Стэнфордского университета STAN-CS-TN-93-1, декабрь 1993 г.
  19. ^ Сергей Брин и Лоуренс Пейдж. Анатомия крупномасштабной гипертекстовой поисковой системы в Интернете. Стэнфордский университет . 1998. Проверено в декабре 2006 г.
  20. ^ HS Heaps. Анализ хранения кодирования сжатия для базы данных документов. 1NFOR, I0(i):47-61, февраль 1972 г.
  21. ^ Стандарт Unicode — часто задаваемые вопросы. Проверено в декабре 2006 г.
  22. ^ Оценки хранения. Проверено в декабре 2006 г.
  23. ^ Google Webmaster Tools, «Язык гипертекстовой разметки 5», Конференция по SEO, январь 2012 г.
  24. ^ Бернерс-Ли, Т., «Язык разметки гипертекста - 2.0», RFC 1866, Сетевая рабочая группа, ноябрь 1995 г.

Дальнейшее чтение