Metadata Filtering Strategies
Content: Metadata Filtering Strategies
User Intent
"How do I filter content by metadata? What filters are available?"
Operation
SDK Method:
queryContents()withfilterparameterGraphQL:
queryContentsquery with ContentFilterEntity Type: Content
Common Use Cases: Filtered search, date range queries, type filtering, collection filtering, entity-based queries
Metadata Filtering Overview
Graphlit provides powerful metadata filtering to narrow search results based on indexed properties. Filters can be combined with search queries or used alone.
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({
filter: {
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",
filter: {
types: [ContentTypes.File],
fileTypes: [FileTypes.Document],
collections: [{ id: 'research-papers' }]
}
});
// Complex filter with multiple criteria
const complex = await graphlit.queryContents({
filter: {
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)
filtered = await graphlit.queryContents( filter=ContentFilterInput( types=[ContentTypes.Email], creation_date_range=DateRangeInput( from_=datetime(2024, 1, 1).isoformat() ), feeds=[EntityReferenceInput(id='feed-id')] ) )
Complex filter
complex = await graphlit.queryContents( filter=ContentFilterInput( types=[ContentTypes.File], file_types=[FileTypes.Document], file_size_range=Int64RangeInput( from_=10000000 # 10MB ), collections=[EntityReferenceInput(id='collection-id')] ) )
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
Issue: No results with multiple filters Solution: Check if filters are too restrictive
Issue: Date filter not working Solution: Use correct ISO 8601 format
Issue: Want content from Feed A OR Feed B Solution: Multiple feeds in array = OR
Production Example
Last updated
Was this helpful?