Class: Parse::Retrieval::Reranker::Fixture

Inherits:
Base
  • Object
show all
Defined in:
lib/parse/retrieval/reranker.rb

Overview

Deterministic, zero-network reranker for tests and offline use. Scores each document by lexical token overlap with the query (Jaccard-ish: shared unique lowercased word count, tie-broken by input order). No external dependency, fully reproducible.

Constant Summary

Constants inherited from Base

Base::MAX_DOCUMENTS

Instance Method Summary collapse

Methods inherited from Base

#rerank

Instance Method Details

#rerank_scores(query, documents, _top_n) ⇒ Object (protected)



137
138
139
140
141
142
143
144
145
146
147
# File 'lib/parse/retrieval/reranker.rb', line 137

def rerank_scores(query, documents, _top_n)
  q_tokens = tokenize(query)
  documents.each_with_index.map do |doc, i|
    d_tokens = tokenize(doc)
    overlap = (q_tokens & d_tokens).length
    # Normalize into a 0..1-ish score so output looks like a real
    # relevance score; longer-overlap docs rank higher.
    denom = [q_tokens.length, 1].max
    [i, overlap.to_f / denom]
  end
end