Индексирование содержимого

Какими бы замечательными ни были механизм ввода запроса и алгоритмы ранжирования, если вы не имеете ясного представления о структуре и типе содержимого в вашем наборе данных, а, значит, поисковая система не понимает, что в документе важно, а что нет, то никакие математические ухищрения не позволят улучшить результат. Например, если во всех документах имеется атрибут «название» и вы знаете, что совпадение с названием часто является наиболее информативным, то можете настроить поисковую систему, так чтобы она повышала вес документов с подходящими названиями, перемещая их на более высокое место в результатах. Аналогично, если в данных встречается много дат и чисел или имен людей и словосочетаний, то, возможно, придется проделать дополнительную работу по правильному индексированию содержимого. С другой стороны, вообразите, насколько негодной оказалась бы поисковая система, если бы она индексировала все НТМЬ-теги на новостном сайте, не отличая их от собственно содержимого. Понятно, что это надуманный пример, но он показывает, как важно подходить к созданию и совершенствованию приложений итеративно, отвечая на нужды пользователей. Первая задача любого человека, приступающего к реализации поиска, - получить представление об индексируемом содержимом. Это исследование должно охватывать как типичную структуру документа, так и его фактическое наполнение.

Составив предварительное представление о содержимом, можно приступать к процессу, обеспечивающему возможность поиска, - индексированию. Чтобы в документе можно было искать, процесс индексирования должен проанализировать его содержимое. Обычно анализ документа состоит из разбиения его на лексемы и, возможно, видоизменения каждой лексемы для приведения ее к нормализованному виду, называемому термом. К числу видоизменений, порождающих терм из лексемы, относятся стемминг, преобразование в нижний регистр или вообще удаление. Обычно за принятие решения о том, какие изменения применять, отвечает приложение. Одни приложения не вносят никаких изменений, тогда как другие изменяют лексемы очень сильно. В некоторых случаях поисковая система мало что может предложить в плане управления анализом. Хотя поначалу может показаться, что отсутствие управления упрощает работу, впоследствии это, скорее всего, аукнется - когда выяснится, что результаты не дотягивают до требуемого стандарта качества. В табл. 3.1 приведены некоторые распространенные подходы к преобразованию лексем в термы для целей индексирования.

Таблица 3.1. Типичные методы анализа

Метод

Описание

Лексический анализ

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

Приведение к нижнему регистру

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

Стемминг

Убирает суффиксы слов и т. п. Описан в главе 1.

Удаление стоп-слов

Удаляет такие расхожие слова, как the, and и а, которые часто встречаются в большинстве документов. Поначалу это делалось для экономии места в индексе, но некоторые современные поисковые системы перестали удалять стоп-слова, поскольку они могут быть полезны при выполнении расширенных видов поиска.

Расширение

синонимами

Для каждой лексемы производится ее поиск в тезаурусе, и найденные синонимы добавляются в индекс. Часто это делается для поисковых, а не индексных термов, поскольку в этом случае обновленный список синонимов динамически учитывается на этапе запроса, так что переиндексирование не нужно.

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

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

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

Рис. 3.4. Структура данных, называемая инвертированным индексом, сопоставляет термам документы, в которых они встречаются, что позволяет поисковой системе быстро производить поиск по заданным термам. Слева показан пример словника, а справа - документы, в которых эти слова встречаются.

В инвертированном индексе хранится информация о том, в каких документах встречается каждый терм.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >