知识卡片
技术选型要基于业务价值判断,而非单纯通用技术指标
内容
团队在检索引擎选型时对比了Xapian、Lucene、Solr、Sphinx四个候选:Xapian当时较早支持BM25概率模型、C++实现使索引检索性能领先;Lucene早期版本二次开发工作量太大、性能远不及C++实现的Xapian;Solr定制灵活性差,更适合整站抓取和全文索引,不适合电商场景需要的重点索引;Sphinx与MySQL绑定过深、定制侵入性强、检索模型单一,更适合对相关性排序要求不高的全文检索场景。这个案例给出的选型方法论是:技术选型不能只比较各候选方案在通用基准测试上的技术指标,而要先充分理解自身业务的真实价值诉求(这里是”垂直搜索需要对搜索意图有精细理解、检索模型和权重计算要求高”),再逐项对照每个候选方案的定制灵活性、检索模型的可调节程度、以及与自身业务场景的匹配度——一个在通用场景表现优秀的技术方案,如果定制灵活性不够或检索模型过于单一,放到有特殊精细化需求的业务场景里可能反而是错误的选择。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.12 基于Xapian的垂直搜索引擎的构建分析"节,"6.12.2 技术选型","1.检索引擎选型"(同源文件:_epub-src/OEBPS/Text/Chapter6_12_3.xhtml)
- 结论依据:原文说明"选型一定要了解业务和业务的价值,垂直搜索的核心价值在于,要对用户输入关键字的搜索意图有充分理解……所以对于检索模型和权重计算要求较高……Solr定制灵活性较差,比较适合整站页面抓取和全文索引处理,不能满足对于电商产品的索引需求……Sphinx与MySQL结合过于紧密,定制侵入性太强,检索模型单一,更适合相关性排序和权重计算不那么高的全文检索",直接支撑本卡片结论。
- 原始内容:选型一定要了解业务和业务的价值,垂直搜索的核心价值在于,要对用户输入关键字的搜索意图有充分理解,返回的结果的相关性、权重排序要与用户高度匹配,提高满意度,所以对于检索模型和权重计算要求较高。