Problem
`rapidfuzz.fuzz.WRatio("libtmux", <10K-char transcript>)` returns ~60 for every record. The score doesn't differentiate results because WRatio is designed for comparing strings of similar length, not a 7-char needle against a 10K-char haystack.
All results show the same score, making `--threshold` useless and the score display meaningless.
Expected
A scoring strategy that works for record-level search:
- Substring presence + match density (how many times the term appears)
- Position weighting (match in first line vs buried at line 500)
- Term coverage for multi-term AND queries
- Or: use `rapidfuzz.fuzz.partial_ratio` which is designed for substring matching in longer strings
Evidence
```
agentgrep search --limit 5 --threshold 80 libtmux
No matches found.
```
Every record scores ~60, so threshold 80 filters everything.
Problem
`rapidfuzz.fuzz.WRatio("libtmux", <10K-char transcript>)` returns ~60 for every record. The score doesn't differentiate results because WRatio is designed for comparing strings of similar length, not a 7-char needle against a 10K-char haystack.
All results show the same score, making `--threshold` useless and the score display meaningless.
Expected
A scoring strategy that works for record-level search:
Evidence
```
agentgrep search --limit 5 --threshold 80 libtmux
No matches found.
```
Every record scores ~60, so threshold 80 filters everything.