Производительность узлов текстовой обработки

При использовании процессора с частотой 1ГГц индексирование текста выполняется со скоростью около 18 КБ/сек.

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

Для оценки производительности использовался персональный компьютер с ОС Windows, процессором Intel Pentium 4 со скоростью передней шины 233MBzx15 и скоростью обработки 3,5 ГГц. Оперативная память – 2 ГБ 466 МГц (dual) с периодом ожидания 3-3-3-9. Жесткий диск – 7200 объемом 160 ГБ и свободным местом около 50 ГБ.

Первый тестовый текст представляет собой одну таблицу данных, в которой имеется одна текстовая колонка. Размер текста – 278 МБ. Таблица содержит 511976 записей. На создание текстового индекса уходит 14 минут. В ходе индексирования PolyAnalyst выполняет последовательный парсинг каждой текстовой записи и выполняет такие операции, как отделение слов друг от друга, распознавание пунктуации, выявление границ между предложениями, различные морфологические трансформации. Эта информация затем сохраняется на жестком диске вместе с исходными данными.

Далее из данных колонок были извлечены ключевые слова, был создан узел Производные колонки и созданы колонки с данными булевского типа для каждого из обнаруженных 590 ключевых слов. В ходе выполнения узла Производные колонки оценивается выражение каждой новой колонки. Каждая запись сравнивается с булевским выражением с тем, чтобы получить значение "истина"/"ложь". Чтобы оценить выражение одной колонки, это выражение разбивается, и искомое ключевое слово сравнивается с индексом текста, чтобы выяснить, встречается ли оно в записях, и нужно ли сохранить истинное или ложное значение. Общее время выполнения – 14 минут 46 секунд.

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

Затем был создан узел Таксономия с 30 категориями на основе результатов алгоритма текстовой кластеризации. Каждая категория представляет собой отдельный поисковый запрос. Затем узел Таксономия был выполнен. В ходе выполнения узла каждый поисковый запрос применяется к целому тексту. Для этого поисковый запрос разбивается, и текстовый индекс проверяется на наличие всех элементов запроса. Затем набор найденных записей, для каждой записи при этом приводится значение релевантности по шкале от 0 до 100, сохраняется для каждой из 30 категорий. Общее время выполнения узла – 17 минут 12 секунд.

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

Второй тестовый текст состоит из одной таблицы. В таблице 1111000 записей. Индексирование было выполнено в течение 35 минут. Узел Производные колонки был выполнен за 38 минут 10 секунд, Таксономия – за 1 час 10 минут и 2 секунды. Простые запросы обрабатывались со скоростью 1703640 строк в секунду, сложные запросы – 166733 строк в секунду.