使用querybuilder做忽略大小写查询的例子
自定义Predicate:
import com.day.cq.search.Predicate;
import com.day.cq.search.eval.AbstractPredicateEvaluator;
import com.day.cq.search.eval.EvaluationContext;
import org.apache.felix.scr.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import javax.jcr.query.Row; @Component(
metatype = true,
factory = "com.day.cq.search.eval.PredicateEvaluator/caseinsensitive"
)
public class CaseInsensitiveLikePredicate extends AbstractPredicateEvaluator { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public static final String PROPERTY = "property";
public static final String VALUE = "value";
public static final String WILDCARD = "%"; @Override
public boolean includes(Predicate predicate, Row row, EvaluationContext context) {
if (predicate.hasNonEmptyValue(PROPERTY)) {
return true;
}
return super.includes(predicate, row, context);
} @Override
public String getXPathExpression(Predicate predicate, EvaluationContext context) {
if (!predicate.hasNonEmptyValue(PROPERTY)) {
return null;
}
if (predicate.hasNonEmptyValue(PROPERTY) && null == predicate.get(VALUE)) {
return super.getXPathExpression(predicate, context);
}
if (predicate.hasNonEmptyValue(PROPERTY)) {
predicate.get(VALUE);
if (WILDCARD.equals(predicate.get(VALUE))) {
logger.info("Case Insensitive Query only has wildcard, ignoring predicate");
return "";
}
logger.info("jcr:like(fn:lower-case(" + predicate.get(PROPERTY) + "), '" + predicate.get(VALUE).toLowerCase() + "')");
return "jcr:like(fn:lower-case(" + predicate.get(PROPERTY) + "),'" + predicate.get(VALUE).toLowerCase() + "')";
}
return null;
}
}
使用predicate:
if (!StringUtils.isBlank(q)) {
map.put("group.p.or", "true");
map.put("group.1_caseinsensitive.value", "%" + q + "%");
map.put("group.1_caseinsensitive.property", "jcr:title");
map.put("group.2_caseinsensitive.value", "%" + q + "%");
map.put("group.2_caseinsensitive.property", "text1");
map.put("group.3_caseinsensitive.value", "%" + q + "%");
map.put("group.3_caseinsensitive.property", "text2");
}
参考 https://forums.adobe.com/thread/2326696
使用querybuilder做忽略大小写查询的例子的更多相关文章
- solr 忽略大小写
1.types标签下加入如下fieldType <fieldType name="str_lower" class="solr.TextField" so ...
- MySQL库中表名忽略大小写设置的影响
前不久,对mysql的lower_case_table_names参数有点小小的疑问: 1.lower_case_table_names是表名忽略大小写还是所有对象(字段.索引等)都忽略大小写? 2. ...
- Java字符串替换忽略大小写
今天在做字符串替换时忽略大小写,网上找到了一个非常简便的方法,使用String的replaceAll方法. java.lang.String.replaceAll(String regex, Stri ...
- mysql表名忽略大小写问题记录
问题描述:一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!如下: mysql> show tables; +--- ...
- 自己写的一个关于Linq to Entity 动态查询的例子
这两天一直想写一个动态查询的方式,先是晚上查询了一下,发现大家写的差不多都是一样的[如:http://www.cnblogs.com/ASPNET2008/archive/2012/10/28/274 ...
- JAVA正则忽略大小写
java正则表达式: (?i)abc 表示abc都忽略大小写 a(?i)bc 表示bc忽略大小写 a((?i)b)c 表示只有b忽略大小写 也可以用Pattern.compile(re ...
- 修改mysql忽略大小写
mysql -p --1.登录mysql show variables like "%case%";+------------------------+-------+| Vari ...
- Python: re.IGNORECASE 标志参数字符串忽略大小写的搜索替换
为了在文本操作时忽略大小写,需要在使用re 模块的时候给这些操作提供re.IGNORECASE 标志参数.比如 >>> text = 'UPPER PYTHON, lower pyt ...
- 超强敏感词过滤算法第二版 可以忽略大小写、全半角、简繁体、特殊符号、HTML标签干扰
上一篇 发一个高性能的敏感词过滤算法 可以忽略大小写.全半角.简繁体.特殊符号干扰 改进主要有几点: 用BitArray取代Dictionary用空间换时间 性能进一步提升 大概会增加词库的 6k* ...
随机推荐
- caffe-ssd需要安装opencv
https://blog.csdn.net/xiaxiazls/article/details/52039473
- [PHP] 解决人人商城收银台不能上传图片问题
反正网上一大堆,也不知道哪个版本有修复,反正我的没有修复. 问题报错:ReferenceError: angular is not defined 解决如下: 修改文件:addons/ewei_sho ...
- 高校表白APP-冲刺第一天
今天我们开了第一次会议, 一.任务: 今日任务布局登录页面,注册页面,修改密码界面 明日任务完成基本的登录页面框架 二.遇到的困难: 布局文件里的一些标签,用法不清楚,页面跳转都得学习.
- OO第二单元优化博客
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...
- 了解Linux操作系统发展阶段
一.硬件与软件发展历史 计算机由硬件和软件组成结构 二.Linux的发展史 Linux 操作系统是Unix操作系统的一种克隆系统.它诞生于1991年的10月5日(只是第一次正式向外公布的时间).以后借 ...
- 1344:【例4-4】最小花费 dijkstra
1344:[例4-4]最小花费 Dijkstra (1)a [ i ] [ j ] 存转账率(..转后所得率..) (2)dis [ i ] 也就是 a [ 起点 ] [ i ] (3)f [ i ] ...
- React 列表页面传递参数
React 列表进入详情页面 首先安装 react-router-dom (4.0) npm/yarn install react-router-dom 路由跳转配置 列表 父组件 this.prop ...
- dataframe的进行json数据的压平、增加一列的id自增列
{"name":"Michael", "age":25,"myScore":[{"score1":1 ...
- 5.JAVA基础复习——JAVA中的static关键字作用与用法
static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3. ...
- C/C++中数据的存储
学java时了解到不同的数据在系统中存储的位置不一样,有的存在栈里,有的存在堆里.学C/C++时没注意过这个,最近学数据结构时遇到了问题:在定义一个结构体的指针时,系统如何给它分配的空间?从而让我想去 ...