파이썬으로 PyLucene을 활용한 검색 결과 정렬하기

이번 포스트에서는 파이썬으로 PyLucene을 활용하여 검색 결과를 정렬하는 방법에 대해 알아보겠습니다.

1. PyLucene란?

PyLucene은 자바의 Apache Lucene 검색 엔진을 파이썬에서 사용할 수 있게 해주는 패키지입니다. Lucene은 검색 인덱싱, 텍스트 분석, 검색 쿼리 등을 지원하는 강력한 엔진으로, 다양한 분야에서 널리 사용되고 있습니다. PyLucene은 이러한 기능을 파이썬에서도 사용할 수 있도록 지원해줍니다.

2. 검색 결과 정렬하기

PyLucene을 사용하여 검색 결과를 정렬하려면 다음과 같은 단계를 따를 수 있습니다:

2.1 인덱스 생성

검색을 위해 먼저 Lucene 인덱스를 생성해야 합니다. 이 인덱스는 검색할 문서들을 색인화하여 저장하는 공간입니다. 다음은 인덱스를 생성하는 예시 코드입니다:

from org.apache.lucene.analysis.standard import StandardAnalyzer
from org.apache.lucene.document import Document, Field
from org.apache.lucene.index import IndexWriter, IndexWriterConfig
from org.apache.lucene.store import RAMDirectory

# 인덱스를 생성할 디렉토리 생성
directory = RAMDirectory()

# 인덱스 생성을 위한 설정
analyzer = StandardAnalyzer()
config = IndexWriterConfig(analyzer)

# IndexWriter 생성
writer = IndexWriter(directory, config)

# 문서 추가
doc = Document()
doc.add(Field("title", "Example Document 1", Field.Store.YES, Field.Index.ANALYZED))
doc.add(Field("content", "This is the content of example document 1.", Field.Store.YES, Field.Index.ANALYZED))
writer.addDocument(doc)

doc = Document()
doc.add(Field("title", "Example Document 2", Field.Store.YES, Field.Index.ANALYZED))
doc.add(Field("content", "This is the content of example document 2.", Field.Store.YES, Field.Index.ANALYZED))
writer.addDocument(doc)

# 인덱스 쓰기
writer.commit()
writer.close()

2.2 검색과 정렬

인덱스를 생성한 후에는 검색과 동시에 정렬을 수행할 수 있습니다. PyLucene에서는 Sort 객체를 사용하여 정렬 기준을 지정할 수 있습니다. 다음은 검색 결과를 정렬하는 예시 코드입니다:

from org.apache.lucene.search import IndexSearcher, MatchAllDocsQuery, Sort, SortField

# IndexSearcher 생성
searcher = IndexSearcher(directory)

# 검색 쿼리 생성
query = MatchAllDocsQuery()

# 정렬 기준 설정
sort = Sort(SortField("title", SortField.Type.STRING))

# 검색 실행
hits = searcher.search(query, None, 100, sort)

# 검색 결과 출력
for hit in hits.scoreDocs:
    doc = searcher.doc(hit.doc)
    print(doc.get("title"))

# IndexSearcher 종료
searcher.close()

위의 예시 코드에서는 title 필드를 기준으로 오름차순으로 결과를 정렬하고 있습니다. 필요에 따라 다른 필드를 기준으로 정렬할 수도 있습니다.

3. 마치며

이번 포스트에서는 파이썬으로 PyLucene을 활용하여 검색 결과를 정렬하는 방법에 대해 알아보았습니다. PyLucene을 사용하면 다양한 검색 기능과 더불어 검색 결과를 원하는 방식으로 정렬할 수 있습니다.

참고 자료: