2.2. Построение координатного индекса .
Собранные вместе основы всех слов из всех текстов сводятся в индекс - своеобразный словарь, в котором основы упорядочены по алфавиту, а при каждой основе записано, с какой страницы она взята (номер страницы) и на каком месте на этой странице данная основа стояла (номер вхождения). Основы в словаре упорядочиваются по алфавиту для удобства поиска по ним. Таким образом, индексная запись имеет следующую структуру: ОСНОВА /номер страницы + номер вхождения / номер страницы + номер вхождения / номер страницы -I- номер вхождения / .... Конечно, в реальности для экономии места и повышения скорости использования индекса его структуру всячески оптимизируют и усложняют. Например, вместо основ в индексе хранят их номера (так как номера короче и имеют фиксированную длину), а основы хранят отдельно; номера страниц пишут не всякий раз, а только единожды для всех вхождений с данной страницы, и т.д. Затем индекс упаковывают для экономии места, еще раз индексируют для ускорения доступа и т.д.
Слово |
|
Номер документа |
|
Позиции в документе |
«рука» |
|
45678 |
|
56, 5764 |
|
56774 |
|
1,5675,9870 |
|
|
4565578 |
|
5675,6072,6073,6074, ... |
|
|
|
|
|
|
«река» |
|
35671 |
|
567, 578, 592, ... |
|
45678 |
|
412,5765,9875, ... |
|
|
49567 |
|
323,567, ... |
|
|
|
Из примера видно, что слово «рука» встречается 6 раз в документе с номером 45678. Для каждого вхождения запоминается порядковый номер слова в документе. Для слова «рука» данные лежат в отдельном списке. Сопоставляя два списка можно увидеть, что в документе 45678 присутствуют оба слова, причем один раз - даже рядом (позиции 5764 и 5765).
Такой индекс называется координатным. Если в обычном тексте мы идем от страницы к словам, то в индексе поисковая машина идет от слов к страницам. Поэтому индекс поисковой машины еше называют инвертированным или инверсным.
2.3.Прямой индекс.
Чтобы показывать при найденных страницах цитаты с выделенными (подсвеченными) словами запроса, поисковые машины хранят в упакованном виде (без HTML-разметки, графики и прочего "мусора") все тексты всех проиндексированных страниц.
Эта структура используется для того, чтобы показать в найденном документе цитату, соответствующую запросу. В ней для каждого известного поисковой машине документа хранится его «препарированный» текст и некоторые элементы форматирования. Пример прямого индекса:
45678 |
Текст: ... «эта» «структура» «используется» «для» «того» «.» «чтобы» «показать» «в» «найденном» «документе» «цитату» «,» «соответствующую» «запросу» «.» «В» «ней» «для» «каждого» «известного» «поисковой» «машине» «документа» «хранится» ... Форматирование: абзац: 4563, 4598, ... |
49567 |
Текст: «каталог» «ссылок» «интернет» ... Форматирование: жирный шрифт: 3 |
|
Из примера видно, что в прямом индексе для документа с номером 45768 хранятся все содержащиеся в нем слова (со всеми запятыми, точками и прочей пунктуацией) ровно в том порядке, в котором они были в обрабатываемой HTML-странице. Также в прямом индексе хранятся номера слов, после которых начинается новый абзац, номера слов, которые в тексте были выделены жирным шрифтом и т. д.