/**
 * FTS5와 랭킹 알고리즘을 결합하여 검색 정확도와 성능을 동시에 확보합니다.
 * 전문 검색 인덱스(FTS5)로 빠른 검색을 수행하고, 다차원 랭킹 알고리즘으로 관련성 높은 결과를 제공합니다.
 */
import Database from 'better-sqlite3';
import type { MemorySearchFilters, MemorySearchResult } from '../../../shared/types/index.js';
export interface SearchQuery {
    query: string;
    filters?: MemorySearchFilters | undefined;
    limit?: number | undefined;
    /** true이면 텍스트 전용 랭킹 경로에서도 score_breakdown 포함 (하이브리드와 동일 계약) */
    include_score_breakdown?: boolean | undefined;
    /**
     * true이면 텍스트 랭킹에서 피드백 가중치를 적용하지 않음.
     * 하이브리드 검색은 combineAndSortResults → normalizeScores에서만 피드를 반영해 이중 가산을 막는다.
     */
    omit_feedback_in_ranking?: boolean | undefined;
}
export declare class SearchEngine {
    private ranking;
    private cachedFts5Availability;
    private cachedReflectionNotesAvailability;
    private emittedTestReflectionNotesConfigFallbackWarnings;
    constructor();
    private isTestEnvironment;
    private logFallbackWarning;
    private logReflectionNotesConfigFallbackWarning;
    /**
     * 전문 검색 성능을 향상시키고 관련성 높은 결과를 빠르게 반환합니다.
     * FTS5 인덱스를 활용하여 대용량 데이터에서도 빠른 검색이 가능하도록 최적화합니다.
     */
    search(db: Database.Database, query: SearchQuery): Promise<{
        items: MemorySearchResult[];
        total_count: number;
        query_time: number;
    }>;
    /**
     * FTS5의 특수 문법과 보안 요구사항을 준수하여 안전하고 효율적인 검색 쿼리를 생성합니다.
     * 아키텍처 문서의 전처리 규칙을 적용하여 검색 정확도를 향상시킵니다.
     */
    private buildFTSQuery;
    /**
     * 검색 품질을 향상시키기 위해 노이즈를 제거하고 핵심 키워드만 추출합니다.
     * 아키텍처 문서의 전처리 규칙을 준수하여 일관된 검색 결과를 제공합니다.
     */
    private preprocessQuery;
    /**
     * FTS5의 특수문자 처리 규칙을 준수하여 쿼리 오류를 방지하고 안전한 검색을 보장합니다.
     */
    private makeFTSSafe;
    /**
     * 준비된 SQL 쿼리를 실행하여 실제 검색 결과를 데이터베이스에서 획득합니다.
     */
    private executeQuery;
    /** 각 항 score는 최종 점수에 대한 기여(텍스트 경로는 FTS 블렌드·factBoost 반영 후), pct는 displayTotal 대비 백분율(정수 반올림, contracts §1) */
    private attachBreakdownToDisplayTotal;
    /**
     * FTS5 랭킹과 다차원 점수를 결합하여 사용자에게 가장 관련성 높은 결과를 우선 제공합니다.
     * 관련성, 최근성, 중요도, 사용성 등을 종합적으로 고려하여 검색 품질을 향상시킵니다.
     */
    private applyRanking;
    /**
     * FTS5 인덱스의 존재와 동작 여부를 확인하여 안전한 검색 전략을 선택합니다.
     * 인덱스가 없거나 비정상인 경우 대체 검색 방식을 사용하여 기능 안정성을 보장합니다.
     */
    private checkFTS5Availability;
    /**
     * reflection_notes 컬럼이 FTS5에서 사용 가능한지 확인
     * 마이그레이션 상태를 확인하여 Fallback이 필요한지 판단합니다.
     *
     * @param db - 데이터베이스 인스턴스
     * @returns reflection_notes 컬럼 사용 가능 여부
     */
    private checkReflectionNotesAvailability;
    /**
     * reflection_notes 검색 쿼리 빌더
     * 마이그레이션 상태에 따라 FTS5 MATCH 쿼리 또는 LIKE 쿼리를 선택합니다.
     *
     * @param db - 데이터베이스 인스턴스
     * @param searchQuery - 검색 쿼리
     * @returns reflection_notes 검색 조건 (SQL WHERE 절 조건)
     */
    private buildReflectionNotesSearchCondition;
    /**
     * Fact 메타 가중치 (Issue #88): num_times·last_mentioned_at으로 자주·최근 언급된 기억에 보정 배율 적용.
     * 반환값은 1 이상의 배율(예: 1.0 ~ 1.2)로, finalScore에 곱해 사용한다.
     */
    private calculateFactMetadataBoost;
    /**
     * 사용자에게 검색 결과가 선택된 이유를 명확히 전달하여 검색 결과의 신뢰성을 높입니다.
     * 관련성, 최근성, 중요도 등 다양한 요소를 종합하여 투명한 검색 과정을 제공합니다.
     */
    private generateRecallReason;
}
//# sourceMappingURL=search-engine.d.ts.map