feat(search): ADR-027 Phase 2 — file-path filter
Add a path_prefix filter to semantic search, honoured on both the MCP tool and the dense-only visualization/API paths through the shared filter contract. - build_base_filter_conditions: append FieldCondition(file_path, MatchText(path_prefix)) when set. file_path is only on doc_type == "file" points, so a non-empty path_prefix implicitly restricts to files. - Promote path_prefix to an explicit keyword param on the SearchAlgorithm ABC and both algorithms; thread it through nc_semantic_search (blank ⇒ no filter), the /api/v1 search endpoints, and the viz route. - Add a file_path TEXT payload index to _PAYLOAD_INDEX_FIELDS (no content re-index; idempotent startup migration). MatchText tokenizes on server Qdrant and matches by substring on local/embedded qdrant-client — both serve folder scoping. - Update ADR-027 (Phase 2 implemented; readiness table; semantics note). Tests. Refs ADR-027 Phase 2. Deck #177. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c2c8dc1a08
commit
ab128bef5b
@@ -62,6 +62,14 @@ _PAYLOAD_INDEX_FIELDS: dict[str, PayloadSchemaType] = {
|
||||
# is idempotent, so existing collections gain this index at startup with no
|
||||
# content re-index and no operator action.
|
||||
"modified_at": PayloadSchemaType.INTEGER,
|
||||
# file_path is the ADR-027 Phase 2 path filter field: searches apply
|
||||
# MatchText(key="file_path", text=path_prefix) (see
|
||||
# search/access_filter.build_base_filter_conditions). MatchText needs a TEXT
|
||||
# index on server Qdrant; the value is already on every file point
|
||||
# (processor.py, doc_type == "file" only), so this is a no-content-re-index
|
||||
# migration like modified_at. Local/embedded qdrant-client matches by
|
||||
# substring without an index, so dev stacks work without it too.
|
||||
"file_path": PayloadSchemaType.TEXT,
|
||||
}
|
||||
|
||||
# Sentinel point that records "this collection has been backfilled to str
|
||||
|
||||
Reference in New Issue
Block a user