实例介绍
这是一个令人难以置信的自动完成库,能够在微秒或纳秒内返回搜索结果,拥有最快的自动完成算法,并且搜索复杂度为O(n),支持所有流类型,包括传统的磁盘存储,以降低托管成本。此库支持.Net Standard 2.1+ 和 .Net Framework 4.6.1,允许免费商业使用。
该库自2016年发布,自2015年以来一直在使用,已经在土耳其最佳字典网站tureng上得到应用,处理了数十亿次请求,平均响应时间仅为0.05毫秒(基于磁盘)。此外,该库还提供了内存存储功能,使得平均搜索速度提升了1000倍。我们通过数百万条记录提供自动完成功能,处理了数十亿次请求。
与许多云服务相比,我们的库在设计时考虑了线性读取优化,使得搜索速度极大依赖于您的磁盘速度。在许多云基础设施中,由于提供了较大的读取缓冲区(如30MB),这对于线性读取非常有利。
索引构建示例:
var builder = new IndexBuilder(headerStream, indexStream);
builder.Add("keyword");
//builder.AddRange([IEnumerable<string>]);
//builder.WithDataSource(source);
builder.Build();
搜索示例:IIndexSearcher searcher = new InMemoryIndexSearcher(headerPath, indexPath);
searcher.Init();
SearchResult searchResult = searcher.Search(term, 5, false);
【实例截图】
【核心代码】
文件清单
└── autocomplete-aaf2240edbebdecd7a046214d615ccae5da8baac
├── AutoComplete
│ ├── AutoComplete.csproj
│ ├── Builders
│ │ ├── IIndexBuilder.cs
│ │ ├── IndexBuilder.cs
│ │ └── TrieIndexHeaderBuilder.cs
│ ├── Clients
│ │ └── IndexSearchers
│ │ ├── FileSystemIndexSearcher.cs
│ │ ├── InMemoryIndexSearcher.cs
│ │ └── TrieNodeHelperFileSystemExtensions.cs
│ ├── DataStructure
│ │ ├── TrieCharacterComparer.cs
│ │ ├── Trie.cs
│ │ ├── TrieIndexHeader.cs
│ │ ├── TrieNode.cs
│ │ ├── TrieNodeSearchResult.cs
│ │ ├── TrieNodeSearchResultType.cs
│ │ ├── TrieNodeStructSearchResult.cs
│ │ └── TrieStringComparer.cs
│ ├── Domain
│ │ ├── ManagedInMemoryStream.cs
│ │ ├── SearchOptions.cs
│ │ └── SearchResult.cs
│ ├── Helpers
│ │ └── BitArrayHelper.cs
│ ├── Readers
│ │ ├── TrieBinaryReader.cs
│ │ └── TrieIndexHeaderCharacterReader.cs
│ ├── Searchers
│ │ ├── IIndexSearcher.cs
│ │ ├── IndexData.cs
│ │ └── IndexSearcher.cs
│ └── Serializers
│ ├── TrieIndexHeaderSerializer.cs
│ └── TrieIndexSerializer.cs
├── AutoComplete.sln
├── AutoComplete.Tests
│ ├── AutoComplete.Tests.csproj
│ ├── BitArrayHelperTests.cs
│ ├── IndexBuilderTests.cs
│ ├── IndexSearcherTests.cs
│ ├── ManagedInMemoryStreamTests.cs
│ ├── TrieCharacterComparerTests.cs
│ ├── TrieIndexHeaderTests.cs
│ ├── TrieNodeStructSearchResultTests.cs
│ └── TrieTests.cs
├── AutoComplete.v12.suo
├── LICENSE
├── Local.testsettings
├── README.md
└── Samples.ConsoleApp
├── Benchmark.cs
├── Program.cs
├── Sample.cs
├── Samples.ConsoleApp.csproj
└── Words350k.txt
13 directories, 45 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论