Code Samples - Module 7: Pagination & Result Shaping¶
Overview¶
This directory contains comprehensive code samples demonstrating how to implement pagination and result shaping in Azure AI Search. The examples cover various pagination strategies, result customization techniques, and performance optimization approaches across multiple programming languages.
Sample Categories¶
1. Basic Pagination¶
- Skip/top pagination implementation
- Page size optimization
- Navigation controls
- User experience patterns
2. Skip & Top¶
- Traditional offset-based pagination
- Performance considerations
- Deep pagination challenges
- Best practices and limitations
3. Range Pagination¶
- Filter-based pagination for large datasets
- Cursor-based navigation
- Performance optimization
- Consistency handling
4. Field Selection¶
- Controlling returned fields with
$select - Payload optimization
- Security considerations
- Dynamic field selection
5. Result Counting¶
- Total result count implementation
- Performance impact analysis
- Conditional counting strategies
- User interface integration
6. Hit Highlighting¶
- Search term highlighting
- Custom highlighting tags
- Multi-field highlighting
- Performance optimization
7. Search Scores¶
- Relevance score inclusion
- Score interpretation
- Custom scoring scenarios
- Debugging relevance
8. Large Result Sets¶
- Efficient handling of large datasets
- Memory management
- Streaming approaches
- Performance monitoring
Programming Languages¶
Each sample category is implemented in multiple programming languages:
- Python - Using azure-search-documents SDK
- C# - Using Azure.Search.Documents SDK
- JavaScript/Node.js - Using @azure/search-documents SDK
- REST API - Direct HTTP calls with examples
Sample Structure¶
Each programming language directory contains:
language/
├── README.md # Language-specific setup and overview
├── 01_basic_pagination.* # Basic pagination implementations
├── 02_field_selection.* # Field selection techniques
├── 03_hit_highlighting.* # Hit highlighting implementations
├── 04_result_counting.* # Result counting strategies
├── 05_range_pagination.* # Range-based pagination
├── 06_search_scores.* # Search scores and relevance
├── 07_large_result_sets.* # Large dataset handling
└── 08_performance_optimization.* # Performance optimization techniques
Note: All samples are now complete and verified against Microsoft documentation.
Prerequisites¶
Before running these samples, ensure you have:
Azure Resources¶
- Azure AI Search service
- Search index with sample data
- Appropriate permissions configured
Development Environment¶
- Programming language runtime
- Required SDKs and packages installed
- Code editor or IDE
- REST client (for REST API examples)
Sample Data¶
Your index should contain sufficient data to demonstrate pagination: - At least 100+ documents for meaningful pagination - Varied content for highlighting examples - Different field types for selection examples
Quick Start¶
1. Choose Your Language¶
Navigate to the appropriate language directory: - Python Examples - C# Examples - JavaScript Examples - REST API Examples
2. Set Up Environment¶
Follow the language-specific setup instructions in each directory's README.
3. Configure Connections¶
Update configuration files with your Azure AI Search service details.
4. Run Samples¶
Start with basic pagination and progress to advanced techniques.
Sample Scenarios¶
Scenario 1: E-commerce Product Listing¶
Files: 01_basic_pagination.*, 04_field_selection.*, 05_result_counting.*
Implement product catalog pagination: - Display products with pagination controls - Show total product count - Optimize payload with field selection - Handle category filtering with pagination
Scenario 2: Search Results Interface¶
Files: 06_hit_highlighting.*, 07_search_scores.*, 02_skip_top.*
Build search results page: - Highlight search terms in results - Display relevance scores - Implement page navigation - Handle empty result sets
Scenario 3: Large Dataset Navigation¶
Files: 03_range_pagination.*, 08_large_result_sets.*
Handle large datasets efficiently: - Use range-based pagination - Optimize for performance - Handle concurrent data changes - Implement infinite scroll
Pagination Techniques¶
Skip/Top Pagination¶
- Simple to implement - Good for small to medium datasets - Performance degrades with large skip valuesRange-Based Pagination¶
- Better performance for large datasets - Consistent performance regardless of page depth - Requires sortable unique fieldSearch After Pattern¶
- Optimal for deep pagination - Handles concurrent changes well - Requires compound sortingResult Shaping Parameters¶
Field Selection¶
- Reduces response payload - Improves performance - Controls data exposureResult Counting¶
- Returns total result count - Useful for pagination UI - May impact performanceHit Highlighting¶
- Emphasizes search terms - Improves user experience - Configurable highlighting tagsConfiguration Templates¶
Environment Variables¶
# Azure AI Search
SEARCH_SERVICE_NAME=your-search-service
SEARCH_API_KEY=your-api-key
SEARCH_ENDPOINT=https://your-search-service.search.windows.net
INDEX_NAME=your-index-name
# Pagination Settings
DEFAULT_PAGE_SIZE=20
MAX_PAGE_SIZE=100
Pagination Configuration¶
{
"pagination": {
"defaultPageSize": 20,
"maxPageSize": 100,
"enableCounting": true,
"enableHighlighting": true,
"highlightPreTag": "<mark>",
"highlightPostTag": "</mark>"
}
}
Best Practices Demonstrated¶
Performance Optimization¶
- Appropriate page sizes
- Efficient pagination strategies
- Field selection optimization
- Result caching techniques
User Experience¶
- Intuitive navigation controls
- Loading states and feedback
- Empty state handling
- Responsive design considerations
Accessibility¶
- Keyboard navigation support
- Screen reader compatibility
- Semantic HTML usage
- Skip links for large result sets
Testing and Validation¶
Unit Tests¶
Each language directory includes tests for: - Pagination logic validation - Parameter handling - Error condition testing - Performance benchmarking
Integration Tests¶
End-to-end tests covering: - Complete pagination workflows - User interaction scenarios - Performance validation - Cross-browser compatibility
Performance Tests¶
Benchmarking for: - Different page sizes - Various pagination strategies - Large dataset handling - Memory usage patterns
Performance Considerations¶
Pagination Strategy Selection¶
- Use skip/top for small datasets (< 10,000 results)
- Use range-based pagination for large datasets
- Consider search-after for deep pagination
- Implement caching for frequently accessed pages
Result Set Optimization¶
- Select only necessary fields
- Use appropriate page sizes (10-50 typically)
- Implement result caching
- Monitor query performance
Memory Management¶
- Limit maximum page sizes
- Implement timeout handling
- Use streaming for large responses
- Monitor resource utilization
Common Patterns¶
Infinite Scroll Implementation¶
async function loadMoreResults(lastId) {
const results = await searchClient.search('*', {
filter: `id gt '${lastId}'`,
orderBy: ['id'],
top: 20,
select: ['id', 'title', 'summary']
});
return results;
}
Pagination with Facets¶
Search Result Preview¶
Troubleshooting¶
Common Issues¶
- Deep pagination performance problems
- Memory issues with large result sets
- Inconsistent results during concurrent updates
- Highlighting performance impact
Debugging Tools¶
- Query performance analysis
- Memory usage monitoring
- Result consistency validation
- User experience testing
Performance Monitoring¶
- Query execution time tracking
- Memory usage analysis
- User interaction metrics
- Error rate monitoring
Interactive Notebooks¶
The notebooks directory contains Jupyter notebooks with: - Interactive pagination examples - Performance comparison studies - Visual result analysis - Experimentation environments
Additional Resources¶
- Search Documents API Reference
- Pagination Best Practices
- Hit Highlighting Guide
- Performance Optimization
Next Steps¶
After exploring these samples: 1. Implement pagination in your applications 2. Optimize for your specific use cases 3. Explore advanced features in intermediate modules 4. Share your experiences with the community
Feedback and Support¶
For questions, issues, or suggestions: - Review the troubleshooting guides - Check the Azure AI Search documentation - Engage with the community forums - Submit feedback through appropriate channels