Metadata Filtering Strategies
Content: Metadata Filtering Strategies
User Intent
Operation
Metadata Filtering Overview
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { ContentTypes, EntityState, FileTypes, ObservableTypes, SearchTypes } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Basic metadata filtering (no search query)
const filtered = await graphlit.queryContents({
types: [ContentTypes.Email],
creationDateRange: {
from: '2024-01-01T00:00:00Z',
to: '2024-12-31T23:59:59Z'
}
});
// Combine search with filters
const searchAndFilter = await graphlit.queryContents({
search: "machine learning",
types: [ContentTypes.File],
fileTypes: [FileTypes.Document],
collections: [{ id: 'research-papers' }]
});
// Complex filter with multiple criteria
const complex = await graphlit.queryContents({
types: [ContentTypes.Email, ContentTypes.Message],
creationDateRange: { from: '2024-01-01' },
feeds: [{ id: 'slack-feed-id' }, { id: 'gmail-feed-id' }],
collections: [{ id: 'team-docs' }],
states: [EntityState.Enabled]
});
console.log(`Found ${complex.contents.results.length} results`);Available Filters
1. Content Type Filter
2. File Type Filter
3. Date Range Filters
4. Collection Filter
5. Feed Filter
6. Workflow Filter
7. State Filter
8. File Size Filter
9. MIME Type Filter
10. File Extension Filter
11. Entity Filter (Observations)
12. Similarity Filter
Boolean Logic (OR / AND)
OR Logic Within Filter
AND Logic Across Filters
Complex OR/AND (Advanced)
Performance Considerations
Fast Filters (Indexed)
Slower Filters (Requires Graph Query)
Metadata filtering (snake_case)
Complex filter
Developer Hints
Combine Filters for Precision
ISO 8601 Duration Format
Empty Array vs Null
Variations
1. Filter by Type and Date
2. Filter by Multiple Collections
3. Large Documents Only
4. Recent Content from Specific Feed
5. Content with Entities
6. PDFs in Collection
7. Search + Complex Filter
Common Issues & Solutions
Production Example
Last updated