1,每天一个需求
solr上模糊查询接口名称,但是接口名称里面不能包含测试接口,也就是说接口名称里面不能包含“测试”或“test”,
本来接口表里面有interface_type字段来标识接口类型的其中当值为4时即为测试接口,但是他们在线上很多可能忘记勾选 测试接口,就导致interface_type不为4且是一个测试接口。
2,怎么做
一开始我准备对对模糊匹配查询出的接口用Stream流的Filter()处理,
List<CdpInterfaceInfoSEDto> data = JSONObject.parseObject(JSONObject.toJSONString(docSearch.get("data")), new TypeReference<List<CdpInterfaceInfoSEDto>>() {
});
data = data.stream().filter(item->!item.getInterfaceName().contains("测试") && !item.getInterfaceName().contains("test"))).collect(Collectors.toList());
但是怎么做会有问题?
首先我们之前对solr查询的做出分页处理,如果这样做会导致从solr取出来的总数据不对,因为Stream过滤调了一部分,
其次String的contains方法会区分大小写导致Test无法过滤,虽然可以继续添加代码来实现,但是这样导致代码冗余不美观。
3,解决办法
使用solr“-”减号做排除查询
虽然是解决啦,但是还是踩了好多坑。加油吧