Tantivy 쿼리 — 지원되는 쿼리 구현들

Tantivy 쿼리

인덱스를 만들었다면 이제 원하는 문서를 찾아야 해요. Tantivy의 query 모듈은 다양한 쿼리 구현을 제공하고, 커스텀 쿼리는 Query 트레이트를 구현해 만들 수 있어요.

주요 쿼리들

  • QueryParser — 자연스러운 쿼리 언어로 파싱 (예: sea whale, 위치 연산자)
  • TermQuery — 특정 term을 담은 문서 매칭
  • PhraseQuery / PhrasePrefixQuery — 특정 단어 시퀀스(뒤가 부분 알려진 term 포함) 매칭
  • BooleanQuery — 하위 쿼리의 부울 조합 (Occur: MUST/SHOULD/MUST_NOT)
  • RangeQuery — 지정 범위 안의 term 매칭 (FastFieldRangeQuery·InvertedIndexRangeQuery 변형)
  • FuzzyTermQuery — Levenshtein 거리 안의 유사 term 매칭
  • RegexQuery — 정규표현식 매칭
  • MoreLikeThisQuery — 주어진 문서와 유사한 문서 매칭
  • BoostQuery / ConstScoreQuery — 스코어 부스트·고정 스코어
  • AllQuery / EmptyQuery — 전체 매칭 / 매칭 없음

검색과 스코어링

Searcher.search()Query를 실행하고 TopDocs::with_limit(n).order_by_score() 같은 collector로 상위 문서를 골라요. 스코어링은 기본 BM25(Lucene과 동일)를 쓰고, Bm25Weight가 점수를 계산해요.

let top_docs: Vec<(Score, DocAddress)> =
    searcher.search(&query, &TopDocs::with_limit(10).order_by_score())?;

더 알아보기