[java] 아파치 루신(Apache Lucene)을 이용한 텍스트 검색 및 색인화

아파치 루신은 자바 기반의 오픈소스 검색 라이브러리로서, 텍스트 검색 및 색인화를 위해 널리 사용됩니다. 이 라이브러리를 사용하면 대량의 텍스트 데이터를 효율적으로 색인화하고 검색하는 기능을 구현할 수 있습니다.

아파치 루신의 기능

아파치 루신은 다음과 같은 주요 기능을 제공합니다:

아파치 루신의 사용 예제

다음은 아파치 루신을 사용하여 텍스트 검색 및 색인화를 수행하는 예제 코드입니다.

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;

public class LuceneExample {
    public void indexAndSearch() throws Exception {
        // 인덱스 생성
        Directory directory = new RAMDirectory();
        IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
        IndexWriter indexWriter = new IndexWriter(directory, config);
        
        Document doc1 = new Document();
        doc1.add(new TextField("title", "Apache Lucene", Field.Store.YES));
        doc1.add(new TextField("content", "Apache Lucene is a search library written in Java.", Field.Store.YES));
        
        Document doc2 = new Document();
        doc2.add(new TextField("title", "Lucene Example", Field.Store.YES));
        doc2.add(new TextField("content", "This is an example of using Lucene for text search.", Field.Store.YES));
        
        indexWriter.addDocument(doc1);
        indexWriter.addDocument(doc2);
        indexWriter.close();
        
        // 검색
        IndexSearcher indexSearcher = new IndexSearcher(directory);
        Query query = new MultiFieldQueryParser(new String[]{"title", "content"}, new StandardAnalyzer()).parse("lucene");
        TopDocs topDocs = indexSearcher.search(query, 10);
        
        for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
            Document document = indexSearcher.doc(scoreDoc.doc);
            System.out.println("Title: " + document.get("title"));
            System.out.println("Content: " + document.get("content"));
            System.out.println("Score: " + scoreDoc.score);
        }
        
        indexSearcher.getIndexReader().close();
        directory.close();
    }
}

위의 예제 코드는 아파치 루신을 사용하여 “title”과 “content” 필드를 가지고 있는 문서를 인덱싱하고, “lucene”라는 키워드로 검색하는 과정을 보여줍니다.

결론

아파치 루신은 텍스트 검색 및 색인화를 위한 강력한 도구로서, 다양한 기능과 유연한 검색 쿼리를 제공합니다. 이를 통해 사용자는 효율적이고 정확한 텍스트 검색 시스템을 구축할 수 있습니다.

더 자세한 내용은 아파치 루신 공식 홈페이지에서 확인할 수 있습니다.