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())?;