Sphinx 的排序速度为何如此之快?
假设我搜索“宝贝”。 Sphinx 将抓取所有包含“baby”的文档,然后使用我自己的算法对其进行排序。 (扩展模式)。
问题是,它怎么能排序得这么快呢?它如何抓取数百万条记录,然后在几毫秒内对它们进行排序?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
假设我搜索“宝贝”。 Sphinx 将抓取所有包含“baby”的文档,然后使用我自己的算法对其进行排序。 (扩展模式)。
问题是,它怎么能排序得这么快呢?它如何抓取数百万条记录,然后在几毫秒内对它们进行排序?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
哦,你问的是魔法。 Sphinx(以及 Lucene 和许多其他搜索引擎)正在使用倒排索引。
基本上,每个文档都被切成令牌;搜索索引包含从标记到名为 帖子列表。处理查询包括检查查询词的倒排列表并定位匹配的文档。为了加快速度,标记被存储为整数列表。通过压缩索引可以提高效率。
Oh, you're asking about the magic. Sphinx (and Lucene, and many other search engines) are using an inverted index.
Basically, every document is chopped into tokens; The search index consists of a mapping from tokens to documents called the postings list. Processing a query includes going over the postings lists of the query terms and locating matching documents. To make this faster, the tokens are stored as a list of integers. This can be made even more efficient by compressing the index.