PostgreSQL implementation of SearchIndex with permission-based filtering.
Uses HikariCP for connection pooling and pgvector for efficient vector similarity search.
The implementation:
- Extends the vectors table with collection_id and readable_by columns
- Uses GIN indexes for efficient array containment queries
- Applies two-level permission filtering (collection + document)
Value parameters
- dataSource
-
HikariCP data source for connection pooling
- vectorTableName
-
Name of the vectors table
Attributes
- Companion
- object
- Graph
-
- Supertypes
Members list
Value members
Concrete methods
Delete all documents in a collection.
Delete all documents in a collection.
Does not delete the collection itself.
Value parameters
- collectionPath
-
The collection to clear
Attributes
- Returns
-
Number of chunks deleted
- Definition Classes
Close the search index and release resources.
Access to collection management
Delete a document from a collection.
Delete a document from a collection.
Removes all chunks associated with the document.
Value parameters
- collectionPath
-
The collection containing the document
- documentId
-
The document identifier
Attributes
- Returns
-
Number of chunks deleted
- Definition Classes
Drop the permission schema.
Drop the permission schema.
WARNING: This is destructive and will delete all permission data. Only use for testing or complete reset.
Attributes
- Returns
-
Success or error
- Definition Classes
Ingest a document into a specific collection.
Ingest a document into a specific collection.
The collection must:
- Exist (call ensureExists first if needed)
- Be a leaf collection (can contain documents)
Value parameters
- chunks
-
Pre-chunked content with embeddings
- collectionPath
-
Target collection path
- documentId
-
Unique document identifier
- metadata
-
Document metadata
- readableBy
-
Document-level permission override (empty = inherit from collection)
Attributes
- Returns
-
Number of chunks indexed
- Definition Classes
Initialize the permission schema.
Initialize the permission schema.
Creates necessary tables and indexes if they don't exist. Safe to call multiple times (idempotent).
Attributes
- Returns
-
Success or error
- Definition Classes
Access to principal (user/group) management
Main query method with permission filtering.
Main query method with permission filtering.
Performs a two-stage permission filter:
- Collection-level: Only search collections the user can access
- Document-level: Only return documents the user can read
Value parameters
- additionalFilter
-
Optional additional metadata filter
- auth
-
User authorization context
- collectionPattern
-
Pattern to filter collections (e.g., confluence/STAR)
- queryVector
-
Embedding vector for semantic search
- topK
-
Maximum number of results to return
Attributes
- Returns
-
Permission-filtered search results
- Definition Classes
Inherited methods
Query with a text query (for hybrid search).
Query with a text query (for hybrid search).
Value parameters
- additionalFilter
-
Optional additional metadata filter
- auth
-
User authorization context
- collectionPattern
-
Pattern to filter collections
- queryText
-
Text for keyword search (optional)
- queryVector
-
Embedding vector for semantic search
- topK
-
Maximum number of results
Attributes
- Returns
-
Permission-filtered search results
- Inherited from:
- SearchIndex
Get statistics for a collection.
Get statistics for a collection.
Value parameters
- collectionPath
-
The collection path
Attributes
- Returns
-
Collection statistics
- Inherited from:
- SearchIndex