You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+49Lines changed: 49 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -269,6 +269,55 @@ Returns frontend settings, feature flags, destination shelves, and available ind
269
269
270
270
Persists frontend-managed settings.
271
271
272
+
The settings payload accepts a new optional field to control indexer prioritization:
273
+
274
+
```json
275
+
{
276
+
"filters": {
277
+
"preferredFormat": "epub",
278
+
"indexers": ["Indexer A", "Indexer B"],
279
+
"indexerPriority": ["Indexer B", "Indexer A"]
280
+
}
281
+
}
282
+
```
283
+
284
+
`filters.indexerPriority` is an ordered array of indexer names (strings). When present, Bookseerr will give a bonus to search results that originate from earlier indexers in the list.
285
+
286
+
### Scoring & Indexer priority
287
+
288
+
Bookseerr now uses a scoring-based ranking for search results to provide more consistent and relevant "best" selections. Factors included in the score:
289
+
290
+
- Preferred format: large bonus when the result matches `filters.preferredFormat`.
291
+
- Format bias: EPUB/azw3/mobi receive positive weight; PDF receives a negative penalty by default.
292
+
- Seeders: added as points (capped) so healthier torrents rank higher.
293
+
- File size: smaller files are preferred with a small bonus (to avoid unnecessarily large downloads).
294
+
- Language match: bonus when the result language matches `filters.language`.
295
+
- Indexer priority: optional ordered bonus via `filters.indexerPriority` (earlier indexers get a larger bonus).
296
+
297
+
The `/api/search` response includes a numeric `score` on each result so you can inspect why a result was chosen. The search pipeline still applies filters (excluded formats, min seeds, max size, indexer selection) and falls back through relaxed stages if no result matches strictly.
298
+
299
+
### How to test locally
300
+
301
+
1. Open the UI and go to Settings → Prowlarr indexers. Use the new "Indexer priority" panel to add and order indexers.
302
+
2. Save settings (this issues `POST /api/settings`).
303
+
3. Run a search and inspect the returned results with `curl`:
Look at the `score`, `format`, `seeders`, `sizeMB`, and `indexer` fields to verify ranking behaviour. Adjust `indexerPriority` or format preferences and save again to retune.
310
+
311
+
Example `POST /api/settings` body including priority (useful for testing via `curl`):
This feature is intended to make "best result" selection more deterministic and customizable for multi-indexer setups. If you want different weighting (e.g., reduce format bias or change size/seed influence), we can expose weight settings in the UI or tune defaults in `src/services/prowlarr.service.js`.
0 commit comments