ES搜索“其它”选项
情景再现:
如图,搜索“干预类型”。最后一项“其他”表示除了前面列举的其他数据。
如果用SQL筛选“其他”,写出来大致是这样:
Select * from
tablewhere
typenot in (‘药物’,’生物制品’,’混合疗法’……)
这样写勉强还好。
但是,既然提到了ES,我们就可以在索引层下功夫。
在建立索引的时候,专门处理该字段,凡事不属于上面列出的类型,都标记为‘其他’,可以这样写:
function processType($type)
{
$type_list = ['药物','生物制品','混合疗法'...];
if(!in_array($type,$type_list)){
$type = '其他';
}
return $type;
}
然后,“其他”就可以和其他的筛选项一起愉快的筛选了。