关于数据的高级搜索,你需要知道这些
编辑导读:进入数据时代,面对海量的数据,想要找到一个精准的目标数据就必须要进行高级检索。通过更多维度来描述目标数据,从而提高目标数据的精准度。本文作者围绕数据的高级检索,发表了自己的看法,与你分享。
大数据时代,想要发挥数据的最大效用,找到目标数据成为一个重要的课题。数据量变大,搜索条件越多,目标数据的相似度就会越高,对目标数据的描述越准确。
例如,在100万条数据里中找到一个特定的人。只通过姓名搜索,可能会有重名的人。如果加上性别维度进行搜索,重名的就会减少。如果再加上出生日期,符合要求的数据就会更少。如果再加上籍贯、工作、兴趣爱好,就会大大缩小目标数据的范围。从而保证目标数据的唯一性,从而出现了高级检索的需求。
高级搜索,是一种通过更多维度来描述目标数据,从而提高目标数据的精准度,最终找到目标数据的搜索方式。
一、高级检索
高级搜索是将多个单一搜索条件通过一定的逻辑关系,按照一定的运算顺序组合起来,形成一个复杂的筛选条件,并通过该复杂的筛选条件找到目标数据的方法。由两个部分组成,多个单一搜索条件、一定的逻辑关系。下面会对该定义中的内容逐项介绍。
1. 多个搜索条件与单一搜索条件的对比关系
从筛选维度角度来看,多个搜索条件的筛选维度更多。
从用户的操作成本来看,用户需要花费原来N倍的时间来编辑筛选条件,并且需要思考多个筛选条件之间的逻辑关系和运算顺序,以此来提高召回数据的精准度。
从开发实现复杂度来看,单一搜索条件只需要从单表中查询一次即可,多个搜索条件需要在多个表中查询,另外将多个表中查询得到的结果按照规则进行组合,程序的复杂度上会增大。
从查询次数角度来看,对于一条数据来说,单一条件查询一次即可,而多个搜索条件需要N次查询。
从服务器的计算压力来看,在一条数据中,多个搜索条件与单一查询条件相比耗时较长。当数据量较小时,服务器的计算压力不会有所体现。当数量增大时,查询次数就会增大,服务器的计算压力也会增大。体现在费用上,服务器的花费就会更贵。
从召回结果角度来看,单一搜索条件因为对目标数据描述的维度过于单一,而满足某一个维度件的数据可能会有很多,从而召回的结果就会很多。多个搜索条件从多个维度描述目标数据,同时满足多个条件的数据则会大大降低,召回结果就会更少,结果会更加符合用户的要求。但是很可能会因为搜索条件过于严苛,导致零召回。
2. 一定的逻辑关系
逻辑关系用于定义筛选条件召回结果的组合方式。对召回结果按照一定的逻辑关系进行运算,进而得出用户需要的目标数据。
召回结果指的是,使用每个筛选条件去数据库中查询,查询出来的结果。
对召回结果加入逻辑关系以后,一共有三种条件组合形式。
1)所有筛选结果取合集
指,所有筛选条件召回的数据结果,放在一起取合集来组成最终的召回结果。
合集所解决的问题:
- 当用户对搜索内容不确定,不知道当前的搜索条件能否召回数据,所以就希望通过对搜索结果取合集的方式来召回尽量多的数据,从而提高召回目标数据的概率。
- 当筛选条件拼写错误或字段间有空格等原因导致部分筛选条件输入错误,同时部分筛选条件输入正确,在该场景下,通过合集仍然有召回目标数据的概率。
因为合集把满足每个条件的数据都召回,并将召回结果集合在一起组成召回数据,所以合集具有召回的数据量比较大的特点。当召回的数据量过大时,用户从召回的结果中找到目标数据花费的时间成本较大。所以只有数据库数据量较小时,通过合集召回的数据才会相对比较少,用户从小数据量的数据中找到目标数据的成本是可接受的。
例如,从400位学生找到10位学生组成年级篮球队。从爱好、身高两个维度筛选。要求“爱好包含篮球”“身高大于等于180cm”。但是老师无法确定学生情况,于是放松筛选标准,两个条件满足其中一个即可通过初筛。
2)所有筛选结果取交集
指,所有筛选条件召回的数据结果,放在一起取交集来组成最终的目标数据。
交集所解决的问题是,筛选条件召回的数据过多,用户通过二次检索找到目标数据的成本高。
交集需要将每个筛选条件所召回的结果取交集从而得到召回数据,因为目标数据需要同时满足各个筛选维度的筛选条件,所以具有召回数据量小,精准度高的特点。当数据量较大时,通过交集的方式提高召回数据与目标数据的匹配程度,同时由于召回的数据量较小,所以用户二次搜索的成本可接受。
例如,从8000位学生找到最优秀的10个人组成校篮球队。从性别、身高、体重、爱好四个维度筛选,要求“性别为男、身高大于等于180、体重大于80kg、爱好包含篮球”。于是筛选条件间采用交集策略,必须同时满足所有筛选条件。
3)自定义逻辑关系
指,用户自己决定筛选条件之间的逻辑关系,来控制筛选条件的严格程度,最终使筛选条件召回的患者数量在一个合理的水平,让用户的二次搜索的成本是可接受的。
自定义逻辑关系解决的问题是,用户无法自行控制筛选条件的严格程度,在该严格的地方严格,在该放宽的地方放宽,也就无法达到最佳的召回结果。
自定义逻辑关系的特点是用户对筛选条件严格程度控制的自由度高。这种高自由度是建立在用户对搜索内容了解的基础上,对于确定的搜索条件通过交集收缩严格程度,对于不确定的搜索条件通过合集的方式放松严格程度,将筛选条件严格程度的决策权交给用户,从而达到最佳的召回结果。
例如,从8000位学生中找到最优秀的10人组成校篮球队。从性别、身高、体重、爱好四个维度筛选,要求“性别为男、身高大于等于180、体重大于80kg、爱好包含篮球”。但是不知道身高大于等于180cm的学生数量,在身高维度放宽筛选条件,“身高大于等于175cm 并且 弹跳高度大于15cm”也可以。
将逻辑关系的控制权交给用户,由用户根据自己的情况设定筛选条件之间的逻辑关系,选择使用“或者”还是“并且”,自主控制筛选条件的严格程度。
二、总结
根据数据量的大小,以及用户对目标数据的了解程度,用户可以根据自己需要选择不同的搜索方式。
当数据量比较小的时候,用户可以通过单一维度对目标数据进行检索,或者增加并集策略。
当数据量比较大的时候,用户可以通过多个维度对目标数据进行检索和交集策略。
当用户对目标数据比较确定的时候,可以使用自定义逻辑关系的方式。
本文由 @申bobo 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
当用户对目标数据比较确定的时候,可以使用自定义逻辑关系,这个会存在系统默认的逻辑关系吗?