Marcel
349f74d39a
feat(fts): replace ILIKE hasText with FTS two-phase search and RELEVANCE sort
- DocumentSort: add RELEVANCE enum value
- DocumentSpecifications: remove hasText() ILIKE, add hasIds(List<UUID>)
for FTS-pre-filtered ID sets
- DocumentService.searchDocuments(): FTS two-phase path — findRankedIdsByFts()
returns ranked UUIDs, hasIds() narrows subsequent Specification query,
in-memory re-sort preserves rank order; RELEVANCE is the default when
text is present and no explicit non-relevance sort is requested
- DocumentSpecificationsTest: remove hasText() tests (Specification removed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>