Индексация XML - документов
Для решения поставленной задачи предлагается следующая структура индексного файла коллекции, представленного в виде XML-документа:
<indexing>
<описание_вида id=”1” … >
<искомый_элемент_1>значение_элемента_1</искомый_элемент_1>
<искомый_элемент_2>значение_элемента_2</искомый_элемент_2>
…
<искомый_элемент_m>значение_элемента_m</искомый_элемент_m>
</описание_вида>
<описание_вида id=”2” … >
<искомый_элемент_1>значение_элемента_1</искомый_элемент_1>
<искомый_элемент_2>значение_элемента_2</искомый_элемент_2>
…
<искомый_элемент_m>значение_элемента_m</искомый_элемент_m>
</описание_вида>
…
<описание_вида id=”n” … >
…
</описание_вида>
</indexing>
Индексный файл для каждой коллекции формируется автоматически, на основе ее документов (j.xml, j=1,…,n - файлов) и заданного для каждой коллекции списка элементов описания структуры документов, по которым возможен поиск. При этом предполагается, что все элементы <описание_вида> индексного файла будут заранее отсортированы по элементу <название_на_русском_языке>, который используется системой для вывода списка документов на экран монитора. Процедура поиска XML-документов в коллекциях ЭБ с использованием индексного файла и DOM-модели заключается в следующем.
1. Проверяется: есть ли в коллекции документы с датой модификации файла больше, чем дата модификации индексного файла? Если да, то запускается процедура переиндексации и поиск будет осуществлен по “новому” индексному файлу. Если нет, то поиск идет по “старому”
файлу – index.xml.
2. Из файла index.xml создается объектная модель документа с корневым элементом <коллекция>.
Поиск осуществляется по всем элементам <описание_вида>, а “внутри” каждого “поддерева” – по “непустым” элементам из заполненной пользователем интерфейсной формы поиска. По результатам поиска формируется список отсортированных искомых документов, который выводится на экран пользователя по 25 (или менее) названий.
Предложенная процедура поиска XML-документов имеет ряд следующих преимуществ:
- поиск осуществляется по заранее отсортированным в файле index.xml данным.
- использование DOM-модели для доступа к элементам индексного файла занимает меньше оперативной памяти по сравнению с доступом к элементам файла, включающего все документы коллекции.
- в данном случае задействована только одна операция чтения файла.
Недостатком предложенного подхода является то, что требуется создание отдельного индексного файла и его периодическое обновление.