Master Documentation Search: Beyond Keywords
Tired of searching “authentication” and getting 47 irrelevant results?
ULPI’s semantic search understands what you mean , not just what you typed .
This guide teaches you:
🎯 How to write queries that return exactly what you need
🔍 Advanced filters (repository, branch, file type, date)
⚡ Pro tips to search 10x faster
🚀 Real-world search scenarios with examples
The Problem: Why Most Searches Fail
You’ve experienced this frustration:
Generic Keywords (Fails)
Natural Language (Works)
You search: “database”You get:
127 results across 23 files
Database setup guide
Database migration docs
Database troubleshooting
Database performance tuning
123 other “database” mentions
Problem: Too broad. Which one do you actually need?Time wasted: 10 minutes scanning resultsYou search: “How do I rollback a failed database migration?”You get:
3 highly relevant results
Migration rollback procedure (exact match)
Troubleshooting failed migrations
Database backup restoration
Result: First result is exactly what you neededTime saved: 9 minutes
The difference? Specificity + natural language.
Natural Language Queries: Ask Like a Human
ULPI understands questions, not just keywords.
How-To Questions Ask for step-by-step guidance: "How do I deploy to production?"
"How do we handle rate limiting?"
"How can I optimize slow queries?"
"How to rollback a deployment?"
Returns: Guides, tutorials, step-by-step docs
What-Is Questions Ask for definitions or explanations: "What is our API rate limit?"
"What environment variables are required?"
"What testing framework do we use?"
"What's the deployment approval process?"
Returns: Configuration, policies, explanations
Show-Me Requests Ask for examples or code: "Show me unit test examples"
"Show me Docker configuration"
"Show me the deployment script"
"Show me error handling patterns"
Returns: Code examples, templates, patterns
Where-Is/Find Requests Ask for locations or specific docs: "Where are logs stored?"
"Find the setup guide"
"Find webhook documentation"
"Where is the Redis config?"
Returns: Specific files, locations, links
Why it works: Semantic search analyzes the entire question to understand your intent.
Real-World Search Scenarios
How to search in common situations:
🚀 Scenario 1: New Developer Onboarding
Situation: Sarah just joined the team. She needs to set up her local environment. Wrong Approach
Right Approach
Searches: “setup”Gets: 89 results
Docker setup
AWS setup
Environment setup
CI/CD setup
Database setup
IDE setup
Time: 20 minutes reading 6 different docsSearches: “How do I set up my local development environment for the first time?”Gets: 3 results
docs/GETTING_STARTED.md - Complete setup guide
backend/README.md#local-setup - Backend-specific steps
infrastructure/local-env.md - Environment config
Time: 5 minutes - follows the getting started guideEven better: “What are all the dependencies I need to install for local development?”Key insight: Include “local” + “first time” + “development environment” = precise results
🐛 Scenario 2: Debugging Production Error
Situation: 3 AM. Production throwing 500 errors. Need troubleshooting steps FAST. Panic Search (Fails)
Focused Search (Works)
Searches: “500 error”Gets: 67 results about error handling in generalTime wasted: 5 minutes during critical outage
Searches: “How to troubleshoot 500 errors in production”Gets:
infrastructure/runbooks/500-errors.md - Exact runbook
docs/troubleshooting.md#500-errors - Debugging steps
backend/monitoring.md - Logs location
Time saved: Found runbook in 10 secondsAlternative search: “Production 500 error troubleshooting steps”Pro tip: Bookmark common runbooks, but ULPI search is faster than scrolling bookmarks.
🔐 Scenario 3: Implementing New Feature
Situation: Need to add OAuth authentication. Want to follow existing patterns. Generic Search
Specific Search
Searches: “authentication”Gets: Everything about auth (100+ results)
API authentication
User authentication
Service-to-service auth
Frontend auth
Admin authentication
Problem: Which one matches our OAuth implementation?Searches: “How do we implement OAuth authentication in the API?”Gets:
backend/docs/oauth.md - OAuth implementation guide
api/auth.md#oauth-flow - OAuth flow diagram
backend/controllers/AuthController.php comments - Code example
Bonus: AI can now generate code following YOUR OAuth patternFollow-up search: “What OAuth providers do we support?”Pattern: Start specific → Get exact docs → AI codes using your standards
🔄 Scenario 4: Understanding Legacy System
Situation: Inherited old codebase. Need to understand why things were built this way.Search tip: Look for Architecture Decision Records (ADRs) with “why” questions
📊 Scenario 5: API Integration
Situation: Third-party integrating with your API. Needs clear examples.Search progression:
Start Broad
Search: “API authentication documentation”Gets: Overview of auth methods
Get Specific
Search: “How to authenticate API requests with API key?”Gets: Step-by-step auth guide
Find Examples
Search: “Show me cURL examples for authenticated API requests”Gets: Working code examples
Handle Errors
Search: “What error codes does the API return for failed authentication?”Gets: Error reference table
Pattern: Broad → Specific → Examples → Edge cases
⚡ Scenario 6: Performance Optimization
Advanced Filters
Narrow your search when you know where to look.
Repository Filter
Search specific repos when you know the context:
Syntax: Use repository: filter"authentication" repository:backend-api
Use case: Only need backend auth docs, not frontendResult: Only searches backend-api repoSyntax: Comma-separated list"deployment" repository:backend-api,infrastructure
Use case: Deployment spans multiple reposResult: Searches only those 2 reposNo filter needed: Use case: Don’t know where docs are locatedResult: Searches everything (usually what you want)
When to use repository filters?
Use repository filter when:
✅ You know exactly which repo has the docs
✅ You want to exclude noise from other repos
✅ Searching microservices (each service = separate repo)
Skip repository filter when:
❌ You’re not sure where docs live
❌ Documentation might span multiple repos
❌ You want comprehensive results
Branch Filter
Search specific branches for work-in-progress docs:
Main Branch (Default)
Development Branch
Feature Branch
No filter needed: Searches: main or master branch (production docs)Use 99% of the time Syntax: branch:develop"new API endpoints" branch:develop
Use case: Reviewing WIP documentation before mergeResult: Searches develop branch onlySyntax: branch:feature/branch-name"OAuth 2.0 implementation" branch:feature/oauth-upgrade
Use case: Reviewing feature documentation in PRResult: Searches that specific feature branch
Pro tip: Use branch filters when reviewing PRs to see documentation changes before merging.
File Type Filter
Limit to specific file types:
README Files Only
Docs Directory
Markdown Files
Syntax: filetype:README"installation" filetype:README
Use case: Quick setup instructions (READMEs are usually higher quality)Result: Only searches README.md filesSyntax: path:docs/"API reference" path:docs/
Use case: Skip README files, only formal documentationResult: Only searches docs/ directorySyntax: filetype:md"deployment guide" filetype:md
Use case: Exclude .txt files or other formatsResult: Only .md and .mdx files
Date Filter
Find recent or historical documentation:
Recently Updated
Older Docs
Specific Date Range
Syntax: updated:7d"deployment process" updated:7d
Use case: Find docs changed in last weekResult: Only docs modified in last 7 daysSyntax: updated:<30d"legacy API" updated:<30d
Use case: Find outdated docs that need updatingResult: Docs older than 30 daysSyntax: updated:2025-01-01..2025-01-31"changelog" updated:2025-01-01..2025-01-31
Use case: Find all changes in January 2025Result: Docs updated in that range
Semantic vs. Keyword Search
Understanding the difference improves your searches.
How Semantic Search Works
You search: “How do I send emails?”Semantic search understands these mean the same:
“send emails”
“email delivery”
“SMTP configuration”
“mail service”
“notification emails”
Finds docs about:
Email configuration
SMTP setup
Mail service integration
Notification delivery
Even though your exact phrase isn’t in the docs! You search: “authentication methods”Semantic search knows these are related:
Login flows
OAuth
JWT tokens
Session management
User verification
API keys
Two-factor auth
Returns all auth-related docs regardless of exact wordingYou search: “optimize performance”Semantic search connects:
Speed improvements
Query optimization
Caching strategies
Load time reduction
Performance tuning
Bottleneck analysis
Returns performance docs even with different terminology
When to Use Exact Match
Force exact phrase matching with quotes:
Exact Phrase
Semantic (Default)
With quotes: Finds: Only docs with exact phrase “database migration”Use when: You know the exact technical termWithout quotes: Finds: Docs about:
Database migration
Schema updates
Data migration
Database versioning
Use when: You want comprehensive results
Rule of thumb: Start without quotes (semantic). Add quotes if too many results.
Search Optimization Tips
Get better results faster:
✅ Tip 1: Be Specific, Not Generic
Bad (generic):
❌ “database”
❌ “error”
❌ “API”
❌ “setup”
Good (specific):
✅ “How to optimize slow PostgreSQL queries?”
✅ “How to handle 500 errors in production?”
✅ “What rate limits does our REST API have?”
✅ “How to set up local development environment on macOS?”
Why it works: Specific queries match specific docs
❓ Tip 2: Use Question Format
Add environment, technology, or use case: Without context:
“authentication” → 100 results
“cache” → 50 results
“deployment” → 75 results
With context:
“API authentication with JWT tokens” → 5 results
“Redis cache configuration for sessions” → 3 results
“Deployment to AWS production environment” → 4 results
Context types:
Environment: local, staging, production
Technology: Redis, PostgreSQL, Docker, Kubernetes
Use case: authentication, caching, logging, monitoring
Platform: AWS, GCP, Azure, Heroku
If first search doesn’t work, rephrase: Deployment example:
“How do I deploy to production?”
“What’s the production deployment process?”
“How to push code to prod?”
“Deployment steps for live environment”
Authentication example:
“How do we authenticate users?”
“What’s our login process?”
“User verification flow”
“How to sign in users?”
Usually find docs by attempt #2-3
📝 Tip 5: Start Broad, Then Narrow
Search progression strategy:
Start Broad
Search: “API documentation”Get: Overview of all API docs
Add Specificity
Search: “API authentication documentation”Get: Auth-specific API docs
Get Very Specific
Search: “How to authenticate API requests with Bearer tokens?”Get: Exact guide you need
Why this works: First search orients you, subsequent searches zoom in
🔗 Tip 6: Use Related Terms from Results
⏱️ Tip 7: Use Recency for Fast-Moving Topics
Technology changes fast. Prioritize recent docs: Examples:
“Kubernetes deployment” updated:30d → Latest K8s practices
“React patterns” updated:90d → Modern React (not class components)
“API changes” updated:7d → Recent breaking changes
Use case: Avoid outdated practices
Understanding Search Results
What you get when ULPI returns results:
Content Preview
Metadata
Direct Link
Relevance Score
Relevant excerpt from documentation: ## Production Deployment
To deploy to production:
1. Run tests: `npm test`
2. Build assets: `npm run build`
3. Push to deploy branch: `git push origin main:deploy`
4. Monitor deployment: https://dashboard.example.com
Deployment takes ~5 minutes. Check #deployments Slack channel for status.
Highlights:
Most relevant section (not entire file)
Preserved formatting
Code examples intact
Links included
Source information for traceability: 📄 File: docs/deployment.md
📦 Repository: backend-api
🌿 Branch: main
🕐 Last Updated: 2 days ago
👤 Last Author: @alice
Why useful:
Verify documentation is current
Know which repo it’s from
See who maintains it
Click to view in GitHub/GitLab: 🔗 github.com/org/backend-api/blob/main/docs/deployment.md#L42-L67
Links to:
Exact file
Exact lines (L42-L67)
Your Git provider (GitHub, GitLab, etc.)
Use for: Reading full context, editing docs, linking in SlackConfidence in result quality: Scoring:
90-100%: Excellent match
75-89%: Good match
60-74%: Decent match
Under 60%: Weak match (usually filtered out)
Tip: If top result is under 80%, try rephrasing query
Result Ranking
How results are ordered:
Relevance score (semantic similarity)
Keyword matches (exact words in query)
Document recency (newer docs ranked higher)
File importance (README > docs/ > other)
Repository priority (if you specified repos)
Pro tip: First result is usually what you need. If not, check result #2-3 before re-searching.
Common Search Patterns
Copy these proven query patterns:
Development Workflows
Local Setup
Git Workflow
Testing
Debugging
"How do I set up my local development environment?"
"What dependencies are required for local dev?"
"How to run the application locally?"
API & Integration
Authentication
Endpoints
Error Handling
Webhooks
"How to authenticate API requests?"
"What OAuth providers do we support?"
"How to refresh expired tokens?"
Infrastructure & Deployment
Deployment
Environment Config
Monitoring
Scaling
"How to deploy to production?"
"What's the rollback procedure?"
"How to deploy to staging first?"
Troubleshooting Search Issues
Possible causes:
Documentation doesn’t exist
Verify docs exist in your repositories
Check if topic is actually documented
Too specific query
Try removing details: “OAuth JWT authentication” → “authentication”
Use broader terms first
Wrong terminology
Your docs say “login”, you search “authentication”
Try synonyms: “sign in”, “user verification”
Repository scope too narrow
Remove repository: filter
Search all repos, not just one
Fixes:
Simplify query
Try synonyms
Remove filters
Ask teammate “what do we call this?”
📊 Too Many Irrelevant Results
Solutions:
Be more specific:
❌ “database” → ✅ “PostgreSQL query optimization”
Use filters:
Add repository:backend-api
Add path:docs/
Add updated:30d
Use exact phrases:
Add quotes: "database migration"
Ask a question:
❌ “deployment” → ✅ “How do I deploy to AWS production?”
Pattern: Generic query → Too many results → Add specificity → Perfect results
❌ Wrong Results (Not Relevant)
Why this happens:
Ambiguous terminology
“Cache” could mean Redis, browser cache, CDN cache
Multiple contexts
“Deploy” could mean backend, frontend, infrastructure
Solutions:
Add context:
❌ “cache setup” → ✅ “Redis cache setup for API sessions”
Specify environment:
❌ “deployment” → ✅ “deployment to AWS production”
Include technology:
❌ “authentication” → ✅ “JWT authentication for REST API”
⏰ Search Returning Outdated Docs
Solutions:
Filter by recency:
"deployment guide" updated:30d
Check result metadata:
Look at “Last Updated” date
If >6 months old, might be outdated
Search specific branch:
(Ensures you get production docs, not old feature branches)
Prevention: Keep docs updated, archive old files
🔐 Can't Find Docs in Private Repo
Check:
Repository connected?
Dashboard → Repositories → Verify repo is listed
API key has access?
Dashboard → API Keys → Check scope includes that repo
Indexing complete?
Dashboard → Repositories → Status should be “Indexed”
OAuth permissions?
GitHub → Settings → Applications → ULPI → Verify repo access
Fix: Re-connect repository or regenerate API key with correct scope
What to expect:
Average Response Time 45ms Simple queries return in under 50 milliseconds Compare: GitHub search takes 200-500ms
Result Accuracy 92% Top 3 results match user intent Measured: User clicks first result 92% of the time
Index Coverage 100% All documentation files searchable within 60 seconds of push Real-time: Webhook-based auto-sync
Query Type Avg Latency Accuracy Token Usage
Simple (1-2 words) 30ms 85% 500 tokens Question (5-10 words) 45ms 95% 1,200 tokens Complex (15+ words) 120ms 92% 2,500 tokens With filters 35ms 97% 800 tokens
Insight: Questions and filters improve both speed and accuracy.
Limitations & Constraints
Current limitations:
Query length: Max 500 characters
Most queries are under 100 characters
If hitting limit, query is probably too complex
Results per query: Max 20 results
Configurable in API
UI shows top 10 by default
If you need >20 results, query is too broad
Language support: Optimized for English
Other languages work but ~10-15% lower accuracy
Non-Latin scripts (Chinese, Arabic) supported but experimental
Code search: Documentation only, not code
Code comments can be indexed (opt-in)
Use GitHub/grep for code search
Binary files: Not indexed
PDFs, Word docs, images not searchable
Convert to Markdown for indexing
Real-time sync: 30-60 second delay
Webhook processing takes 30-60 seconds
Not instant (like grep on local files)
Next Steps
Quick Reference: Search Cheat Sheet
Bookmark this for quick access:
# Repository
repository:backend-api
repository:api,frontend,infrastructure
# Branch
branch:main
branch:develop
branch:feature/new-auth
# Path
path:docs/
path:README.md
# File type
filetype:md
filetype:README
# Date
updated:7d # Last 7 days
updated:30d # Last 30 days
updated:<90d # Older than 90 days
updated:2025-01-01..2025-01-31 # Date range
# Setup & Installation
"How to set up local development?"
"What dependencies are required?"
"Installation guide for {technology}"
# API Documentation
"API authentication methods"
"List all API endpoints"
"API error codes and formats"
# Deployment
"How to deploy to {environment}?"
"Deployment rollback procedure"
"Environment variables for production"
# Troubleshooting
"How to debug {issue}?"
"Where are logs stored?"
"Common errors and solutions"
# Configuration
"How to configure {technology}?"
"Configuration file location"
"Default settings and overrides"
Need help with search? Average response time: Under 2 hours during business hoursPro tip: Share successful search patterns with your team in your internal wiki!