PyLucene을 사용한 한글 텍스트 검색 기능 추가하기

PyLucene은 Apache Lucene의 Python 바인딩으로, 텍스트 검색에 유용한 기능을 제공합니다. 이번 튜토리얼에서는 PyLucene을 사용하여 한글 텍스트 검색 기능을 추가하는 방법에 대해 알아보겠습니다.

PyLucene 설치하기

  1. 우선, Lucene의 최신 버전을 다운로드합니다.
  2. 다음으로, PyLucene의 최신 버전을 다운로드합니다.
  3. 다운로드한 PyLucene 파일을 압축 해제한 후, 명령 프롬프트 또는 터미널에서 setup.py 파일을 실행합니다. 예를 들어, 다음 명령을 실행합니다:
$ python setup.py build
$ sudo python setup.py install

한글 텍스트 색인하기

PyLucene을 사용하여 한글 텍스트 검색 기능을 구현하려면, 먼저 한글 텍스트를 색인해야 합니다. 이를 위해 다음 단계를 따릅니다:

  1. 색인을 저장할 디렉토리를 지정합니다. 예를 들어, index라는 이름의 디렉토리를 사용합니다.

  2. 색인 작업을 위한 IndexWriter 객체를 생성합니다:

import lucene
from java.nio.file import Paths
from org.apache.lucene.analysis.ko import KoreanAnalyzer
from org.apache.lucene.document import Document, Field, TextField
from org.apache.lucene.index import IndexWriter, IndexWriterConfig

lucene.initVM()

index_dir = Paths.get("index")
analyzer = KoreanAnalyzer()
config = IndexWriterConfig(analyzer)
config.setOpenMode(IndexWriterConfig.OpenMode.CREATE)
writer = IndexWriter(index_dir, config)
  1. 한글 텍스트를 색인에 추가합니다. 예를 들어, 다음과 같이 Document 객체에 필요한 필드를 추가한 후, 색인에 추가합니다:
doc = Document()
doc.add(Field("title", "한글 텍스트 검색 튜토리얼", TextField.TYPE_STORED))
doc.add(Field("content", "PyLucene을 사용하여 한글 텍스트 검색 기능을 구현하는 방법에 대해 알아봅니다.", TextField.TYPE_STORED))
writer.addDocument(doc)
  1. 색인 작업이 완료되면, IndexWriter 객체를 닫습니다:
writer.close()

한글 텍스트 검색하기

한글 텍스트를 색인한 후, PyLucene을 사용하여 한글 텍스트 검색 기능을 추가할 수 있습니다. 다음은 검색을 구현하는 단계입니다:

  1. 색인된 디렉토리를 지정합니다:
index_dir = Paths.get("index")
  1. 검색을 위한 IndexSearcher 객체를 생성합니다:
from org.apache.lucene.index import DirectoryReader
from org.apache.lucene.search import IndexSearcher
from org.apache.lucene.queryparser.classic import QueryParser

reader = DirectoryReader.open(index_dir)
searcher = IndexSearcher(reader)
  1. 검색어를 정의하고, QueryParser를 사용하여 검색 쿼리 객체를 생성합니다:
query_text = "한글"
query_parser = QueryParser("content", analyzer)
query = query_parser.parse(query_text)
  1. 검색을 수행하고 결과를 가져옵니다:
hits = searcher.search(query, 10)  # 최대 10개 결과 반환
for hit in hits.scoreDocs:
    doc = searcher.doc(hit.doc)
    print("검색 결과:", doc.get("title"))

마치며

PyLucene을 사용하여 한글 텍스트 검색 기능을 추가하는 방법에 대해 알아보았습니다. 이를 통해 손쉽게 한글 텍스트 검색 기능을 구현할 수 있습니다. PyLucene과 Lucene의 공식 문서를 참고하여 더 많은 기능을 탐색해보세요. Happy coding!

참고 자료