[java] 아파치 루신(Apache Lucene)을 활용한 검색 결과 페이징 처리 방법

아파치 루신은 자바로 작성된 오픈 소스 검색 엔진 라이브러리입니다. 이 라이브러리를 사용하면 풍부한 검색 기능을 애플리케이션에 쉽게 통합할 수 있습니다. 검색 결과를 페이징 처리하는 방법을 알아보겠습니다.

검색 쿼리 생성

검색 결과를 페이징 처리하기 위해서는 먼저 검색 쿼리를 생성해야 합니다. 아파치 루신은 Query 클래스를 사용하여 쿼리를 작성합니다. 예를 들면 다음과 같습니다:

String keyword = "검색어";
Query query = new TermQuery(new Term("content", keyword));

위의 예제에서는 “content” 필드에서 “검색어”를 검색하는 쿼리를 생성합니다.

검색 수행 및 페이징 처리

검색 결과를 페이징 처리하는 방법은 검색을 수행한 후 검색 결과를 조작하는 것입니다. 아파치 루신에서는 TopDocs 클래스를 통해 검색 결과를 반환합니다. TopDocs는 검색 결과의 총 개수, 각 검색 결과의 점수 등을 포함합니다. 다음은 검색 결과를 페이징 처리하는 예제 코드입니다:

int pageSize = 10; // 페이지 당 결과 개수
int pageNumber = 2; // 페이지 번호

// 검색 수행
IndexSearcher searcher = new IndexSearcher(IndexReader.open(directory));
TopDocs topDocs = searcher.search(query, (pageNumber - 1) * pageSize + pageSize);

// 페이징 처리된 결과 출력
ScoreDoc[] hits = topDocs.scoreDocs;
int start = (pageNumber - 1) * pageSize;
int end = Math.min(start + pageSize, topDocs.totalHits);
for (int i = start; i < end; i++) {
    Document doc = searcher.doc(hits[i].doc);
    System.out.println("검색 결과: " + doc.get("title"));
}

위의 코드에서는 pageSize와 pageNumber를 조정하여 원하는 페이지의 검색 결과를 조회할 수 있습니다.

검색 결과 총 개수 반환

검색 결과의 총 개수를 반환하는 방법은 TopDocs 객체의 totalHits 필드를 사용합니다. 총 개수는 검색 수행 후 다음과 같이 확인할 수 있습니다:

int totalHits = topDocs.totalHits;
System.out.println("총 개수: " + totalHits);

요약

이번 글에서는 아파치 루신을 활용하여 검색 결과를 페이징 처리하는 방법을 알아보았습니다. 검색 쿼리 생성, 검색 수행 및 페이징 처리 방법에 대해 다루었습니다. 아파치 루신의 다양한 기능을 활용하여 원하는 검색 결과를 효과적으로 관리할 수 있습니다.

참고 자료