Apache Lucene

Материал из NLPub
Перейти к: навигация, поиск

Введение

Apache Lucene -- высоко-производительная библиотека для полнотекстового поиска, реализованная на языке Java.

Официальный ресурс: [1]

Фичи

Масштабируемость

скорость индексирования: 150GB / час на современном оборудовании [2]
требуемая память (java heap): всего 1MB
инкрементальные и batch обновления индекса на одной скорости
размер индекса: 20-30% от размера исходной информации

Эффективные и точные алгоритмы поиска

ранжированный поиск -- более релевантные результаты на первых позициях
разнообразные типы запросов: 
               фразовые запросы (phrase queries),
               wildcards,
               запросы с операторами близости между поисковыми термами (proximity queries),
               диапазонные запросы (range queries)
поиск по полю документа (fielded search)
сортировка результатов по любому полю (integer, дата etc)
кросс-индекс поиск с объединённым результатом
обновления индекса одновременные с поиском
фасетный поиск (faceted search), подсветка результатов, joins и группировка результатов
модули авто-подсказок для опечаток и не только
возможность изменения алгоритмов ранжирования, например, [3] и [4]
переопределяемый кодек индекса (отвечает за устройство индекса на диске)

Другие языки и платформы

Существуют реализации Lucene на других языках программирования: [5]

Инструменты для работы с индексом

Luke

Luke -- это программа-инструментарий для работы с индексом Lucene, находящемся на локальном или удалённом диске, а также в hdfs. Релизы: [6] LukeOverview.png

Проверка и исправление индекса

Источниками неисправности индекса Lucene может быть недостаток памяти в момент обновления / коммита индекса, а также неисправность на аппаратном уровне. Для восстановления индекса (в тех случаях, когда это возможно), существует инструмент CheckIndex: [7]. Данный инструмент также доступен из интерфейса Luke.

Перед запуском данного инструмента сделайте резервную копию индекса.

Экспорт части или всего индекса в xml

Помимо того, что luke является удобным инструментом для анализа проиндексированных полей сам по себе, предусмотрена возможность экспорта части или всего индекса в формат xml. Например, тут [8] описывается процесс извлечения индексированных токенов (англ.) в формат xml с целью сравнения токенов с токенами в других системах.

Для того, чтобы экспортировать индекс, либо цепочку документов, нужно выбрать из меню Tools пункт Export index to XML:

Screen Shot 2014-09-28 at 11.40.45.png

На рисунке показан процесс экспортирования документов с id 1-10. Альтернативно можно выбрать режим компрессии, особенно в случае экспорта всего либо большой части индекса.

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