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.
# | 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. |
# | 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. |
# | 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 |
# | 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. |
# | 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? |
This project is made possible by the community surrounding it and especially the wonderful people and projects listed in this document.