.Net: docs: Add ADR-0065 for LINQ-based ITextSearch filtering migration strategy #13335
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add ADR-0065: LINQ-Based Filtering for ITextSearch Interface
Summary
This PR adds a comprehensive Architectural Decision Record (ADR) documenting the decision to migrate
ITextSearchfrom clause-based filtering to LINQ-based filtering using a dual interface pattern.Context
Issue: #10456
The existing
ITextSearchinterface usesTextSearchFilter(clause-based approach) which:VectorSearchFilterAPIs internallyDecision
Chosen Approach: Dual Interface Pattern (Option 3)
ITextSearch<TRecord>with LINQ filtering (Expression<Func<TRecord, bool>>)ITextSearchmarked[Obsolete]for backward compatibilityKey Architectural Points
Migration Strategy (Temporary by Design)
Why Mark as
[Obsolete]NowImplementation Patterns Documented
Pattern A: Direct LINQ Passthrough (VectorStoreTextSearch)
Pattern B: LINQ-to-Legacy Conversion (Bing, Google, Tavily, Brave)
Benefits
✅ Zero breaking changes - existing code continues working
✅ Type safety - compile-time validation and IntelliSense
✅ AOT compatible - no
[RequiresDynamicCode]attributes✅ Clear migration path - deprecation warnings guide users
✅ Future-ready - establishes path for technical debt removal
Related PRs
This ADR documents the architectural decision behind:
Review Notes
Per ADR process requirements:
accepted(implementation already complete)This ADR serves as:
Checklist
accepted0065-linq-based-text-search-filtering.mddotnet/docs/decisions/Target Branch
feature-text-search-linq