Lucene

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Apache Lucene
Lucene logo green 300.png
Тип

поиск и программирование

Разработчик

Apache Software Foundation

Написана на

Java

Операционная система

кроссплатформенный

Аппаратная платформа

Java Virtual Machine

Последняя версия

6.6.0 (06 июня 2017)

Лицензия

Apache Software License

Сайт

lucene.apache.org

Lucene — свободная библиотека для высокопроизводительного полнотекстового поиска фонда Apache, используемая в качестве основы в двух самых популярных по состоянию на середину 2010-х годов тиражируемых поисковых системах — Elasticsearch и Solr. Написана на Java.

Разработана Дугом Каттингом (англ. Doug Cutting) в 1999 году, изначально была выложена автором на SourceForge.net. В 2001 году передана в фонд Apache, где вначале развивалась в рамках проекта Jakarta, и перешла в 2005 году в статус проекта верхнего уровня фонда. В рамках проекта верхнего уровня Lucene породила ряд подпроектов, ставших самостоятельными, среди них — Hadoop (инициированный Каттингом и сформировавшим обширную экосистему продуктов), Nutch и Solr (считающийся частью экосистемы Hadoop). Кроме того, библиотека используется в качестве внутреннего механизма в ряде проектов, среди которых YaCy (децентрализованная поисковая система), CrateDB[en] (документоориентированная СУБД с поддержкой SQL), Swiftype[en] (тиражируемая поисковая система для организаций), DocFetcher (локальный поисковик).

Основная функциональная особенность библиотеки — обеспечение масштабируемой и достаточно высокоскоростной индексации (порядка 100 Гбайт в час на сервере массового класса). Создаваемый индекс занимает примерно 20—30 % от размера исходного текста.

Поисковой алгоритм поддерживает ранжированный поиск (лучшие результаты показываются первыми), нечёткий поиск[en], реализовано множество различных типов запросов (запрос фразы, запросы с символами подстановки, поиск интервалов и другие), поиск по значениям метаданных (таких как заголовок, автор, текст). Поддерживается поиск по нескольким индексам с возможностью объединения результатов, реализована сортировка результатов поиска по различным полям. Поиск возможен одновременно с процессом обновления индекса. Логическая архитектура библиотеки представляет любой документ как набор текстовых полей, что позволяет ей функционировать вне зависимости от форматов, как только текстовая информация из них может быть получена.

Портирована на многие другие языки программирования: Си (Lucene4c), C++ (CLucene), Node.js, Go, Delphi (MUTIS), Perl (PLucene), Ruby (Ferret и RubyLucene), PHP (в рамках фреймворка Zend), Lisp (Montezuma), C# (Lucene.Net).

Литература[править | править вики-текст]

  • Erik Hatcher and Otis Gospodnetic. Lucene in Action. — 2nd. — Stamford: Manning, 2010. — P. 528. — ISBN 978-1-933988-17-7.

Ссылки[править | править вики-текст]