enquire-mcp API reference - v3.12.0-rc.19
    Preparing search index...

    Interface SearchHitExplain

    v3.11.6 (S-5) — per-hit ranking EXPLANATION, attached to a SearchHybridHit ONLY when the search was called with explain: true. It makes every re-rank stage's contribution — and the rank MOVEMENT it caused — visible, so you can see WHY a hit landed where it did and, crucially, whether the opt-in --recency-weight / --feedback-weight stages actually changed the order (both were previously evidence-poor: the response showed the final order but never which stage produced it). Every field is a score / rank / age only — no note content beyond what the hit already carries (privacy-safe). Ranks are 0-based positions in the fused candidate list at each stage boundary.

    interface SearchHitExplain {
        feedback?: {
            feedback_score: number;
            rank_after: number;
            rank_before: number;
        };
        final_rank: number;
        graph_boost?: { in_degree: number; score_delta: number };
        recency?: {
            age_days: number;
            rank_after: number;
            rank_before: number;
            recency_score: number;
        };
        reranker?: { rank_after: number; rank_before: number; score: number };
        rrf: { rank: number; score: number };
    }
    Index
    feedback?: { feedback_score: number; rank_after: number; rank_before: number }

    Opt-in closed-loop feedback re-rank (--feedback-weight): the note's feedback score + rank before/after. Present only when feedback re-rank was active; rank_before === rank_after means feedback did NOT move this hit.

    final_rank: number

    Final 0-based rank of this hit in the returned matches.

    graph_boost?: { in_degree: number; score_delta: number }

    Wikilink graph-boost (v2.3.0): in-degree among the fused top-K + the score added (α × in_degree). Present only when graph-boost ran AND this hit received a boost.

    recency?: {
        age_days: number;
        rank_after: number;
        rank_before: number;
        recency_score: number;
    }

    Opt-in recency re-rank (--recency-weight): the note's age + recency score + rank before/after. Present only when recency re-rank was active AND the note's mtime was stattable (a path deleted mid-flight contributes recency 0 and is omitted here); rank_before === rank_after means recency did NOT move this hit.

    reranker?: { rank_after: number; rank_before: number; score: number }

    Cross-encoder reranker (v2.9.0): the reranker score + rank before/after the rerank re-sort. Present only when a reranker ran and scored this hit.

    rrf: { rank: number; score: number }

    RRF-fused rank + score right after Reciprocal Rank Fusion, BEFORE any re-rank stage. The three ranker arms that fed it live in the hit's per_signal.