파이썬으로 PyLucene을 활용한 다국어 검색 기능 구현하기

소개

파이썬은 다양한 검색 기능을 제공하는 PyLucene 라이브러리를 활용하여 다국어 검색 기능을 간편하게 구현할 수 있습니다. 이 기능을 통해 사용자는 다른 언어로 작성된 문서를 키워드로 검색할 수 있습니다. 이번 튜토리얼에서는 PyLucene을 사용하여 다국어 검색 기능을 구현하는 방법에 대해 알아보겠습니다.

PyLucene 설치하기

먼저, PyLucene을 설치해야 합니다. PyLucene은 Java 기반의 Lucene 라이브러리의 파이썬 바인딩입니다. 다음은 PyLucene 설치를 위한 명령어입니다.

pip install PyLucene

다국어 문서 색인하기

다국어 문서를 검색할 수 있도록 하려면, 먼저 문서를 색인해야 합니다. 색인은 문서를 토큰화하고 필터링하여 역색인 데이터베이스를 생성하는 과정입니다.

import lucene

lucene.initVM()

index_dir = "/path/to/index"  # 역색인 데이터베이스 저장 경로

# Analyzer 설정 (문서를 토큰화하고 필터링하는 역할)
analyzer = lucene.StandardAnalyzer()

# IndexWriter 생성
writer = lucene.IndexWriter(lucene.SimpleFSDirectory(lucene.File(index_dir)), analyzer, True,
                            lucene.IndexWriter.MaxFieldLength.LIMITED)

# 문서 추가
doc1 = lucene.Document()
doc1.add(lucene.Field("content", "안녕하세요, 반갑습니다.", lucene.Field.Store.YES, lucene.Field.Index.ANALYZED))
writer.addDocument(doc1)

doc2 = lucene.Document()
doc2.add(lucene.Field("content", "Hello, nice to meet you.", lucene.Field.Store.YES, lucene.Field.Index.ANALYZED))
writer.addDocument(doc2)

# 색인 생성
writer.optimize()
writer.commit()
writer.close()

위 코드에서는 한국어와 영어 문서를 색인하기 위해 content 필드를 사용하였습니다. Field.Store.YES로 설정하여 원문을 역색인 데이터베이스에 저장하고, Field.Index.ANALYZED로 설정하여 문서를 토큰화하고 필터링합니다.

다국어 검색하기

다국어 문서가 색인되었다면, 이제 다국어 검색을 수행할 수 있습니다. PyLucene을 사용하여 다국어 검색을 구현하는 방법은 다음과 같습니다.

import lucene

lucene.initVM()

index_dir = "/path/to/index"  # 역색인 데이터베이스 저장 경로

# Analyzer 설정 (검색어를 토큰화하고 필터링하는 역할)
analyzer = lucene.StandardAnalyzer()

# IndexSearcher 생성
searcher = lucene.IndexSearcher(lucene.SimpleFSDirectory(lucene.File(index_dir)))

# 검색어 생성
query_str = "안녕하세요"
query = lucene.QueryParser(lucene.Version.LUCENE_CURRENT, "content", analyzer).parse(query_str)

# 검색 수행
hits = searcher.search(query, 10)

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

위 코드에서는 "안녕하세요"라는 검색어로 검색을 수행하고 있습니다. QueryParser를 사용하여 검색어를 토큰화하고 필터링하며, 검색 결과는 search 메서드를 통해 얻을 수 있습니다.

마무리

이제 PyLucene을 활용하여 다국어 검색 기능을 구현하는 방법을 알아보았습니다. PyLucene을 사용하면 다양한 언어로 작성된 문서를 간편하게 검색할 수 있으며, 더욱 정교한 검색 기능을 추가할 수도 있습니다. 자세한 내용은 PyLucene 문서를 참조해보시기 바랍니다.

참고 자료