Senior
31
Что такое Lucene и какие у него ключевые структуры?
Companies where asked
Answer from AI
sobes.tech AI
Apache Lucene — это высокопроизводительная библиотека для полнотекстового поиска и индексирования, написанная на Java. Она используется для создания поисковых систем и обеспечивает быстрый поиск по большим объемам текстовых данных.
Ключевые структуры Lucene:
- Индекс (Index) — основная структура, в которой хранятся проиндексированные документы. Индекс состоит из сегментов, каждый из которых представляет собой отдельный обратный индекс.
- Документ (Document) — единица данных, которую индексируют. Документ состоит из полей.
- Поле (Field) — часть документа, содержащая текст или другие данные, которые можно индексировать или хранить.
- Обратный индекс (Inverted Index) — структура, позволяющая быстро находить документы по терминам. Для каждого термина хранится список документов, где он встречается.
- Токенизатор (Tokenizer) — компонент, разбивающий текст на токены (слова) для индексирования.
- Анализатор (Analyzer) — совокупность токенизатора и фильтров, преобразующих текст для индексирования и поиска.
Пример использования Lucene для создания индекса и поиска:
// Создание индекса
Directory dir = FSDirectory.open(Paths.get("indexDir"));
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter writer = new IndexWriter(dir, config);
Document doc = new Document();
doc.add(new TextField("content", "пример текста для индексации", Field.Store.YES));
writer.addDocument(doc);
writer.close();
// Поиск
DirectoryReader reader = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("content", analyzer);
Query query = parser.parse("текста");
TopDocs results = searcher.search(query, 10);
for (ScoreDoc sd : results.scoreDocs) {
Document d = searcher.doc(sd.doc);
System.out.println(d.get("content"));
}
reader.close();