如何创建像搜索一样的Indeed.com?

时间:2011-06-05 14:24:21

标签: mysql sql search search-engine reverse

如果您之前使用过Indeed.com,您可能知道,对于您要查找的关键字,只要屏幕左侧有多个搜索细化选项,它就会返回传统的搜索结果。

例如,搜索关键字“designer”,细化选项为:

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 个答案:

答案 0 :(得分:4)

Indeed.com和其他搜索引擎中使用的技术称为inverted indexing,它是搜索引擎工作方式的核心(例如Google)。您引用的过滤(“细化选项”)称为构面。

您可以使用Apache Solr,这是一个使用Lucene构建的成熟搜索服务器,可以使用其RESTful API轻松集成到您的应用程序中。开箱即用,具有多种功能,如刻面,缓存,缩放,拼写检查等。也被Netflix,C-Net,AOL等多个网站使用 - 因此稳定,可扩展且战斗 - 测试

如果您想深入研究基于facet的过滤工作,请查看Bitsets / Bitarrays,并在此article中进行了描述。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

除了Mios所说的以及Daimon提到它确实使用了非规范化的doc商店。这是一个关于Indeed关于其docstore的技术谈话的链接

http://engineering.indeed.com/blog/2013/03/indeedeng-from-1-to-1-billion-video/

他们工程博客上的另一篇相关文章: http://engineering.indeed.com/blog/2013/10/serving-over-1-billion-documents-per-day-with-docstore-v2/