Normalized analyzer result.
start and end are byte offsets. byte_start and byte_end are retained
for fixture and benchmark interoperability. Documented fields are stable in
0.1.x; metadata keys are additive unless documented separately.
Summary
Types
@type t() :: %Obscura.Analyzer.Result{ byte_end: non_neg_integer(), byte_start: non_neg_integer(), end: non_neg_integer(), entity: atom(), explanation: Obscura.Analyzer.Explanation.t() | nil, metadata: map(), recognizer: atom() | nil, score: float(), source_entity: String.t() | nil, start: non_neg_integer(), text: String.t() | nil }