# 竞价系统-solr工具类
# 概述
由于solr也是竞价系统中比较常用的技术,但solr的语法是比较完整的一套,与以往的SQL语法截然不同。 为了降低solr的使用成本,将solrj方法进行了封装。封装的条件构造器SolrQueryWrapper是 参照MybatisPlus的QueryWrapper设计的,基本上掌握了QueryWrapper就能正常使用SolrQueryWrapper的基本功能。
# 增删查改
# 更新和插入
SolrUpdateUtil.updateBean("shoppingGoods", updateGoods);
# 查询
SolrQueryWrapper wrapper = new SolrQueryWrapper();
wrapper.eq("goodsId", goodsId);
//查询列表
List<ShoppingGoods> goodsList = SolrQueryUtil.queryList("shoppingGoods", wrapper, ShoppingGoods.class);
//查询分页
wrapper.page(0, 20);
SolrPage<ShoppingGoods> page = SolrQueryUtil.query("shoppingGoods", wraper, ShoppingGoods.class);
# 删除
//根据主键删除
SolrUpdateUtil.delete("shoppingGoods", goodsId);
//根据查询删除
SolrUpdateUtil.deleteByQuery(SolrConstant.CO_RECOMMEND, "endBidtime:[* TO 2020-3-12T00:00:00Z]");
# 跨数据集联合查询
solr的联合查询只能用于过滤条件,而不能返回联合查询的另一数据集的任何一个字段。
//参数依次为另一数据集名称,本数据集联合字段,另一数据集联合字段,另一数据集查询构造器
wrapper.join("coOrderMain", "orderMainId", "orderMainId", item -> {
//在另一数据集需要进行的筛选
item .eq("orderStatus", "1");
});
# solr常用语法
- eq(column, value) 全等查询
solr语法: column:value
- like(column, value) 前后模糊匹配
solr语法: column:*value*
- notLike(column, value) 不满足前后模糊匹配
solr语法: -column:*value*
- likeLeft(column, value) 左模糊匹配
solr语法: column:*value
- likeRight(column, value) 右模糊匹配
solr语法: column:value*
- ge(column, value) 大于等于
solr语法: column:[value TO *}
- gt(column, value) 大于
solr语法: column:{value TO *}
- le(column, value) 小于等于
solr语法: column:[* TO value]
- lt(column, value) 小于
solr语法: column:{* TO value}
- between(column, lvalue, rvalue) 在指定区间内(闭区间)
solr语法: column:[lvalue TO rvalue]
- between(column, lvalue, rvalue, false) 在指定区间内(开区间)
solr语法: column:{lvalue TO rvalue}
- in(column, val1, val2, ...) 在指定值中
solr语法: column:(val1 OR val2 OR ...)
- notIn(column, val1, val2, ...) 不在指定值中
solr语法: -column:(val1 OR val2 OR ...)