Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

AEM 6.3 Query builder - How to search for case insensitive ?

surenk
Level 4
Level 4

How can we make the query to ignore case sensitivity of the `property.value` ? 

Using `orderby.case=ignore` is not helping.  

 

Our query:

path=/content/central-content/jcr:content/main/decline_letter
property.value=0091A
property=@letterNumber
type=nt:unstructured
orderby.case=ignore

 

1 Accepted Solution
nidhip010816
Correct answer by
Employee
Employee

Hey,

 

You may do a custom implementation for this. The below doc may help - 

 

https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/implementing-custom-predicate-...

 

This one is not Adobe Doc but seems it will match your use case -> http://experience-aem.blogspot.com/2015/05/aem-6-sp2-query-builder-predicate-evaluator-ignore-case.h...

 

Warm Regards,

Nidz

View solution in original post

5 Replies
aemmarc
Employee
Employee

Lucene is case sensitive.

 

You'd need to run the token through the LowerCaseFilter

 

Do you have a custom index for your queries? 

 

To accomplish this you'll need to modify an index definition in CRX/DE.

 

I'm going to assume you're using a custom index  

 

1) under  /oak:index/your-custom-index

2) add an analyzers nt:unstructured node

3) add a default nt:unstructured node under analyzers 

3) add a filters nt:unstructured node under default

4) add a LowerCase nt:unstructured node under filters

5) reindex the index.

 

surenk
Level 4
Level 4
Thanks for the suggestions. We are not using any index. This is a simple use-case. There will be about 10-20 nodes of content, service needs to return the content if the letter is found.
surenk
Level 4
Level 4

Using `fulltext` seemed to be helping/working.

path=/content/central-content/jcr:content/main/decline_letter
fulltext=0091A
property=@letterNumber
type=nt:unstructured
orderby.case=ignore

 

fulltext may not be a good solution is we have to be searching among a lot of nodes/data. In our case, we search for a very minimal number of nodes.

nidhip010816
Correct answer by
Employee
Employee

Hey,

 

You may do a custom implementation for this. The below doc may help - 

 

https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/implementing-custom-predicate-...

 

This one is not Adobe Doc but seems it will match your use case -> http://experience-aem.blogspot.com/2015/05/aem-6-sp2-query-builder-predicate-evaluator-ignore-case.h...

 

Warm Regards,

Nidz

View solution in original post

surenk
Level 4
Level 4
Yes if there's lots of joins/rules to be applied, but unfortunately not all customers/dev-teams agree to custom code for trivial things.