Skip to content

Reference of foundations and common patterns in Atlas Search.

Notifications You must be signed in to change notification settings

esteininger/atlas-search-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Full Text Search Directly in your Database

Build fast, relevant, full-text search capabilities on top of your data in the cloud

This Full Text Search Guide teaches the foundations and enhancements, so you can build large-scale full text search applications without managing indexes, hardware or replication.

🌩️ Foundations - Start with building a full text search application from scratch in under 100 lines of Python code, then continue to apply additional search-native functions like autocomplete, scoring, highlighting and more.

🌌 Patterns & Use Cases - Combine your knowledge from Foundations and apply it to solve actual business problems. Examples include real world use cases such as relevance score boosting in a restaurant search engine.

🍱 Architecture - Full Text Search doesn't live in a bubble, the data needs to come in and often out as well. Learn how others integrate technologies such as Kafka and S3 into their Full Text Search stack to scale effortlessly.

📦 Miscellaneous - Other content that didn't fit the categories above. This includes examples on using the API to create custom synonym mapping layers, testing search index consistency latency, and more.

Search Foundations

# Label Description
1 Engine Review the basic components of a full-text search engine (including tokenization), and build one.
2 Basic Run a simple text search.
3 Fuzzy Handle common typos
4 Highlighting Add a relevance score and hit highlights to the results
5 Autocomplete Search as you type
6 Phrase Ordered sequence of words
7 Diacritics Include multiple languages
8 Compound Combine two or more operators into a single query (or clause)
9 Explain Understand how the mongot (lucene) returns results in order to tune performance.
10 Count Return a count of the documents returned.

Search Patterns & Use Cases

# Label Description
1 Multi Tenant // Shard Targeting Ability to build search applications that limit what an end user can search for based on their tenancy.
2 Weighted Fields Implement relevance weights where some fields more important than other fields.
3 Advanced Scoring Ensure the boosted variable doesn’t overwhelm the relevance of our search results.
4 Sorting Using the Atlas Search near operator to sort documents based on a numeric, date, or geo field.
5 Synonyms Implement a synonym-based search functionality
6 Multi Collection Search Run a search query that spans multiple collections
7 Faceting Dynamically cluster search results into categories in order to drill down
8 Custom Analyzers Building our own custom analyzers to satisfy different app requirements
9 Automated Search Tuning
10 Autocomplete With Synonyms
11 Saved Searches
12 Flexible Querying The ability to combine multiple indexes to perform performant queries.

End to End Code Demos

# Source Description
1 MongoRX GraphQL with custom Resolver
2 Auto-Tuning Using synonyms, auto-improve your search results
3 Restaurant Finder Restaurant finder app that showcases search queries

Example Search Architecture

# Label Description
1 Event Streaming Using Realm and Kinesis, initiate a workflow where as documents are updated, they're pushed to a Kinesis queue and then pushed to Atlas to be searched.

Miscellaneous

# Label Description
1 Index Creation API Using REST to modify Search indexes
2 Index Speed Test How long does it take to create an index and return a search result?

Credits

This project is made possible by the community surrounding it and especially the wonderful people and projects listed in this document.