Autypo.AspNetCore
1.0.0
dotnet add package Autypo.AspNetCore --version 1.0.0
NuGet\Install-Package Autypo.AspNetCore -Version 1.0.0
<PackageReference Include="Autypo.AspNetCore" Version="1.0.0" />
<PackageVersion Include="Autypo.AspNetCore" Version="1.0.0" />
<PackageReference Include="Autypo.AspNetCore" />
paket add Autypo.AspNetCore --version 1.0.0
#r "nuget: Autypo.AspNetCore, 1.0.0"
#:package Autypo.AspNetCore@1.0.0
#addin nuget:?package=Autypo.AspNetCore&version=1.0.0
#tool nuget:?package=Autypo.AspNetCore&version=1.0.0
β‘ Autypo
Blazing-fast autocomplete and typo-tolerant search for .NET
Autypo is a powerful, developer-friendly search engine for autocomplete, fuzzy matching, and short-string lookups. Whether you're building a product search bar, form helper, or CLI β Autypo makes it effortless to deliver typo-tolerant, fast, and intelligent user experiences.
π Table of Contents
- Getting Started
- Installation
- Features
- Limitations
- Perfect For
- Learning Resources
- Samples
- Benchmarks
- Project Structure
- Support and Feedback
- License
β¨ Getting Started
β Basic Setup β In 30 Seconds
Autypo works out-of-the-box β no config required. Just provide your data and start getting intelligent completions.
using Autypo;
using Autypo.Configuration;
string[] movies = [
"The Lord of the Rings: The Return of the King",
"Star Wars: Return of the Jedi",
"Batman Returns"
];
IAutypoComplete autypoComplete = await AutypoFactory.CreateCompleteAsync(config => config
.WithDataSource(movies));
IEnumerable<string> suggestions = autypoComplete.Complete("retur of the");
// β "Star Wars: Return of the Jedi", "The Lord of the Rings: The Return of the King"
suggestions = autypoComplete.Complete("bamman rets");
// β "Batman Returns"
No tokenization setup. No fuzzy matching config. Just smart results.
β ASP.NET Core Setup with Background Indexing
For real-world apps, Autypo integrates seamlessly with ASP.NET Core and supports background indexing, multi-field search, and dependency-injected data sources.
using Autypo;
using Autypo.AspNetCore;
using Autypo.Configuration;
builder.Services.AddScoped<ProductsLoader>();
builder.Services.AddAutypoSearch<Product>(config => config
.WithDataSource(serviceProvider => serviceProvider.GetRequiredService<ProductsLoader>())
.WithBackgroundLoading(UninitializedBehavior.ReturnEmpty)
.WithIndex(product => product.Name, index => index
.WithAdditionalKeys(product => [product.Description]) // Index name + description
.WithUnorderedTokenOrdering() // Order of words doesn't matter
.WithPartialTokenMatching() // Partial queries still match
// ... and many more configuration options!
));
Define a search endpoint using dependency-injected Autypo:
app.MapGet("/products/search", async (
[FromQuery] string query,
[FromServices] IAutypoSearch<Product> search) =>
{
var results = await search.SearchAsync(query);
return results.Select(r => r.Value);
});
Example Query:
GET /products/search?query=fngerprint usb recogn
Example Result:
[
{
"code": "A1067",
"name": "Fingerprint USB",
"description": "Secure USB flash drive with fingerprint encryption"
},
]
π¦ Installation
Autypo is available on NuGet.
For ASP.NET Core integration (includes the core engine):
dotnet add package Autypo.AspNetCore
For standalone or non-web scenarios (e.g., console apps, background jobs):
dotnet add package Autypo
π‘ Features
Autypo gives you fast, typo-tolerant search with modern developer ergonomics β zero config to start, but extreme tuning if you need it.
π§ Intelligent Matching
- Typo-tolerant by default β fuzzy, partial, and out-of-order input
- Token-level matching control (prefix, fuzziness)
- Opt-in partial matching and out-of-order input
- Built to rank βreal worldβ input
- Multi-index support with priority-based short-circuiting
π§ Deeply Configurable
- Index multiple fields (e.g.
name + description
) - Plug in custom scorers, filters, and match policies
- Add tokenizers and analyzers (N-grams, stemming, etc)
- Per-query tuning for fuzziness, partial match, max results
βοΈ Production-Ready
- Blazing-fast in-memory autocomplete via
IAutypoComplete
- Full-featured, multi-index search engine via
IAutypoSearch<T>
- Eager, background, or lazy indexing β your choice
- Refresh indexes at runtime with
AutypoRefreshToken
- Async-first, thread-safe, allocation-conscious
π Framework-Friendly
- ASP.NET Core integration with full DI support
- Blazor Serverβready (ideal for typeahead inputs)
- Fully .NET-native β no native bindings, no hosted servers
β
Open source & MIT licensed
π‘οΈ Built for scale and safety
π Developer-first design
β οΈ Limitations
Autypo is intentionally designed for short-text and autocomplete scenarios β not full-text search.
- Documents are limited to 64 tokens max (e.g., product names, commands, short descriptions)
- In-memory indexing is fast and efficient, but may not suit massive corpora or multi-megabyte documents
- Autypo is not intended for long-form text search β for that, consider Lucene or ElasticSearch
This tradeoff is deliberate: it keeps Autypo incredibly fast, predictable, and ideal for UX-critical search.
π― Perfect For
- E-commerce product & SKU search
- Admin panel filtering and form helpers
- Smart command palettes
- CLI "Did You Mean?" suggestions
- Blazor autocomplete inputs
- Live-search over reference data (countries, tags, part numbers)
- Fuzzy full-text matching over short documents
π Learning Resources
π Guides
Guide | Description |
---|---|
ASP.NET Core Integration | End-to-end setup with dependency injection and hosted services |
Indexing & Data Loading | Data sources, refresh tokens |
Search & Matching | Customize fuzzy logic, token ordering and more |
Text Analysis & Tokenization | Configure tokenizers, transformers, and analyzers |
Custom Scoring & Filtering | Enrich matches with metadata and business logic |
π» Samples
Sample | What it demonstrates |
---|---|
"Did You Mean?" Console Demo | Interactive CLI Helper β Suggests valid commands with fuzzy matching |
ASP.NET Core Search API | Product Search β REST API with background indexing and multi-field matching |
Blazor City Autocomplete | Real-Time Search UI β Typeahead with typo tolerance and reindexing |
π Benchmarks
Autypo competes head-to-head with Lucene and outperforms many .NET libraries for short-string search:
Library | Multi-Token | Index Time | Search Time | Avg/Search |
---|---|---|---|---|
Autypo | β Yes | 163 ms | 3.34 s | 1.33 ms |
Lucene (Fuzzy) | β Yes | 776 ms | 2.91 s | 1.16 ms |
Lucene (Suggest) | β No | 1.12 s | 503 ms | 0.20 ms |
Levenshtypo* | β No | 25 ms | 312 ms | 0.12 ms |
FuzzyWuzzy | β No | 1 ms | 4m 49s | 92.56 ms |
* Levenshtypo is the fuzzy string search library that powers Autypoβs low-level approximate matching engine. It supports typo-tolerant single-token search using optimized Tries and Levenshtein Automata.
β οΈ See full benchmark repo and disclaimer β
π Project Structure
/src
βββ Autypo/ # Core library
βββ Autypo.AspNetCore/ # ASP.NET Core integration
βββ Autypo.Benchmarks/ # Microbenchmarks
βββ Autypo.IntegrationTests/
βββ Autypo.UnitTests/
βββ Autypo.Aot/ # Ensures that Autypo works in AOT scenarios
/samples
βββ ApiSearchProducts/ # REST API example
βββ BlazorCities/ # Blazor Server autocomplete
βββ ConsoleDidYouMean/ # CLI demo
π¬ Support and Feedback
π§ Have a question?
π‘ Got feedback?
π Found a bug?
Open an issue or start a discussion. We'd love to hear from you.
βοΈ License
Autypo is released under the MIT License.
πββοΈ What's in a Name?
Autocomplete + Typo-tolerance = Autypo.
Simple name, serious power.
Built for modern .NET developers.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Autypo (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0 | 180 | 7/5/2025 |