您现在的位置:融合网首页 > 工信 > 软件 >

在Square做了一年搜索的工程师想和你聊聊这些事(2)

来源:朱赟 作者:朱赟 责任编辑:方向 发表时间:2016-10-26 11:15 
核心提示:实际应用中,很多时候,搜索的数据源来自于多个系统或 Service,格式和数据结构也就都不相同。Extract 就是从这多种多样的数据源中解析出相关的 Field 和 Value,并可能对数据进行一定的校验。Transfer 就是把 Extra
实际应用中,很多时候,搜索的数据源来自于多个系统或 Service,格式和数据结构也就都不相同。Extract 就是从这多种多样的数据源中解析出相关的 Field 和 Value,并可能对数据进行一定的校验。Transfer 就是把 Extract 出来的数据信息转化成搜索引擎的文档存储格式。可能会对一些数据进行组合或聚合,也可能进行一定的转换或计算。最后处理好的文档就可以按照 API 可以接受的格式 Load 到搜索引擎的文档中。

ETL 的过程虽然说起来简单,也就是搭建数据 Pipeline,但是实际中会有很多细节需要考虑和实现。就拿 Extract 来说,怎么从数据源拿数据呢?作为数据源的 Service 可能会实时地 Publish 一些数据更新,这个时候,需要一些类似于 Trigger 或者 Feed Publisher 的机制来保证这样的数据更新可以被搜索引擎的捕捉到。最常见的有三种方式。一是通过加 Trigger,数据变动时直接触发 API Call;一是 Feed 模式;一是使用 Kafka 这样的 Log 机制。而后两种都可以使用 Pull 或者 Push 的方式来触发 Indexing。

这说的是实时 Indexing。而搜索中,因为各种各样的原因(例如早期 ES 的 Re-sharding),往往需要从 0 开始重新 Index 所有的数据。这样,所有的数据源就需要一定的 Persist 机制,把所有数据变动的历史存储下来。Full Reindex 的时候,就可以从这些 Persisted 数据中,重新通过 ETL 产生搜索引擎的文档。

Transform 主要是数据转换,通常比较简单。Load 也就是 API Call,通常是固定的处理方式。但是很多系统需要考虑负载、一致性、和扩展性,因此从 Infra 的角度来说,也需要一定的 Tuning 来保证实时无错的 Load 数据到搜索后端。

Querying

Query 其实最重要的两个概念,我觉得就是 Match 和 Score。Match 就是找到所有满足 Query 条件的数据。Score 就是根据应用的需求,制定一个对结果排序的规则。

Matching 的过程有的时候也称为 Analyze 的过程。通常的做法是 Tokenizing 加 Filtering。Tokenizing 就是把数据划分成一个个不可分割的小单元,然后通过对这些小单元的组合和 Filtering,找到适合需求的所有数据。

Score 常见的也有两种,一种是搜索前静态 Score,也就是和 Query 无关,数据的不同 Field 预先制定一个权重。一种是搜索后 Score,通常和 Query 的具体内容相关。各种不同的 Score 机制可以相互组合使用。而如何调整 Score 函数,让期望的搜索结果出现在比较靠前的地方,则是很多产品的搜索开发中需要致力的地方。很多时候会使用机器学习等方法帮助调整 Score 函数的参数。

Performance and Scalability

除了上面说的两个最基本的功能:Indexing 和 Querying,搜索在实际应用中随着数据的不断增加和 Query 的逐渐复杂化,对于 Performance 和 Scalability 的要求往往也是不断提升。(责任编辑:方向)

  • “扫一扫”关注融合网微信号

免责声明:我方仅为合法的第三方企业注册用户所发布的内容提供存储空间,融合网不对其发布的内容提供任何形式的保证:不保证内容满足您的要求,不保证融合网的服务不会中断。因网络状况、通讯线路、第三方网站或管理部门的要求等任何原因而导致您不能正常使用融合网,融合网不承担任何法律责任。

第三方企业注册用户在融合网发布的内容(包含但不限于融合网目前各产品功能里的内容)仅表明其第三方企业注册用户的立场和观点,并不代表融合网的立场或观点。相关各方及作者发布此信息的目的在于传播、分享更多信息,并不代表本网站的观点和立场,更与本站立场无关。相关各方及作者在我方平台上发表、发布的所有资料、言论等仅代表其作者个人观点,与本网站立场无关,不对您构成任何投资、交易等方面的建议。用户应基于自己的独立判断,自行决定并承担相应风险。

根据相关协议内容,第三方企业注册用户已知悉自身作为内容的发布者,需自行对所发表内容(如,字体、图片、文章内容等)负责,因所发表内容(如,字体、图片、文章内容等)等所引发的一切纠纷均由该内容的发布者(即,第三方企业注册用户)承担全部法律及连带责任。融合网不承担任何法律及连带责任。

第三方企业注册用户在融合网相关栏目上所发布的涉嫌侵犯他人知识产权或其他合法权益的内容(如,字体、图片、文章内容等),经相关版权方、权利方等提供初步证据,融合网有权先行予以删除,并保留移交司法机关查处的权利。参照相应司法机关的查处结果,融合网对于第三方企业用户所发布内容的处置具有最终决定权。

个人或单位如认为第三方企业注册用户在融合网上发布的内容(如,字体、图片、文章内容等)存在侵犯自身合法权益的,应准备好具有法律效应的证明材料,及时与融合网取得联系,以便融合网及时协调第三方企业注册用户并迅速做出相应处理工作。

融合网联系方式:(一)、电话:(010)57722280;(二)、电子邮箱:2029555353@qq.com dwrh@dwrh.net

对免责声明的解释、修改及更新权均属于融合网所有。

新闻关注排行榜

热门推荐 最新推荐

热门关键字

关于我们 - 融合文化 - 媒体报道 - 在线咨询 - 网站地图 - TAG标签 - 联系我们
Copyright © 2010-2020 融合网|DWRH.net 版权所有 联系邮箱:dwrh@dwrh.net 京公网安备 11011202002094号 京ICP备11014553号