如何创建类似于indeed.com的搜索引擎?

4
如果您之前使用过indeed.com,您可能知道,只要输入关键词,它就会返回传统的搜索结果,并在屏幕左侧提供多个搜索细化选项。
例如,搜索关键词“设计师”,细化选项如下:
Salary Estimate
    $40,000+ (45982)
    $60,000+ (29795)
    $80,000+ (15966)
    $100,000+ (6896)
    $120,000+ (2828)
Title
    Floral Design Specialist (945)
    Hair Stylist (817)
    GRAPHIC DESIGNER (630)
    Hourly Associates/Co-managers (589)
    Web designer (584)
    more »
Company
    Kelly Services (1862)
    Unlisted Company (1133)
    CyberCoders Engineering (1058)
    Michaels Arts & Crafts (947)
    ULTA (818)
    Elance (767)
Location
    New York, NY (2960)
    San Francisco, CA (1633)
    Chicago, IL (1184)
    Houston, TX (1057)
    Seattle, WA (1025)
    more »
Job Type
    Full-time (45687)
    Part-time (2196)
    Contract (8204)
    Internship (720)
    Temporary (1093)

它如何快速收集统计信息(例如每个薪资范围内的工作职位数量)。看起来精细选项是实时创建的,因为次要关键字也加载得很快。

是否有特定的SQL技术可以创建这样的功能?或者有没有在网上解释其技术背后的手册?

3个回答

5
Indeed.com和其他搜索引擎使用的技术被称为倒排索引,这是搜索引擎(如Google)工作的核心。您所提到的过滤器(“细化选项”)被称为facets。
您可以使用Apache Solr,这是一个完整的搜索服务器,使用Lucene构建,并使用其RESTful API轻松集成到您的应用程序中。带有多个功能,例如faceting、缓存、扩展、拼写检查等。也被Netflix、C-Net、AOL等多个网站使用,因此稳定、可扩展且经过实战测试。
如果您想深入了解基于facet的过滤器的工作原理,请查找位集/位数组,并在本文章中进行描述。

1
之前有关使用倒排索引和非规范化文档存储的答案很好。我们下一次的技术讨论(http://engineering.indeed.com/talks/machine-learning-at-indeed-scaling-decision-trees/)将会更多地谈论在构建机器学习决策树时倒排索引的强大之处。我们使用这种ML方法来进行结果排序。在讲座后,我会在这里跟进链接到幻灯片和视频。 - youknowjack

0

你为什么认为它们加载得“太快”了呢?它们肯定有漂亮的、可扩展的架构,它们肯定使用了缓存,它们可能正在使用一些非规范化的数据存储来加速某些计算和查询。

看看谷歌和全球网页数量——你也认为谷歌工作得太快了吗?


1
问题中原作者并没有说网站太快。他提到它很快,并询问如何做类似的事情。 - user677526
-1 以平衡到0,因为您完全捏造了他说“太快”的事实,这就是您整个答案所涉及的内容。 - OGHaza

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接