Typesense를 Ruby on Rails 애플리케이션에 통합하는 과정은 다음과 같습니다. ### 1. Typesense 서버 설정
-
서버 설치: Homebrew를 사용하여 로컬에 Typesense 서버를 설치하고,
typesense-server명령어로 시작합니다. 기본 포트는 8108입니다. -
Rails Gem 추가:
Gemfile에gem 'typesense'를 추가하고,config/initializers/typesense.rb에서 Typesense 클라이언트를 호스트, 포트, API 키로 초기화합니다. ### 2. 스키마 정의 및 데이터 인덱싱 -
Typesense Service:
TypesenseService클래스를 생성하여 Typesense API와의 상호작용을 관리합니다. -
컬렉션 스키마 생성:
create_schema메서드를 통해posts컬렉션에title,body,created_at필드를 포함하는 스키마를 정의합니다. -
초기 데이터 로드: Rake task를 활용하여 기존 Rails 데이터베이스의 모든
Post레코드를 Typesenseposts컬렉션에 문서로 인덱싱합니다. 각Post는id,title,body,created_at필드를 가진 Typesense 문서로 변환됩니다. ### 3. 데이터 동기화 및 검색 구현 -
Active Record 콜백:
Post모델에after_create,after_update,after_destroy콜백을 추가하여 Active Record 객체의 변경 사항이 Typesense 인덱스에 실시간으로 반영되도록 합니다. 이는TypesenseService내의 해당 메서드들을 통해 처리됩니다. -
검색 기능:
TypesenseService에search_post메서드를 구현하여 Typesense 검색 API를 호출합니다. 이 메서드는 쿼리, 검색 필드(title,body), 정렬 기준, 페이지네이션 옵션을 포함합니다. -
컨트롤러 연동:
PostsController의search액션에서 사용자 쿼리를 받아TypesenseService.search_post를 호출하고, 결과를 가공하여 뷰에 렌더링합니다. Typesense는 오타 허용(typo tolerance) 기능을 통해 정확하지 않은 쿼리에도 관련성 높은 결과를 제공합니다.