Question

I am implementing full text search on Jackrabbit Repository. After going through the examples given at http://jackrabbit.apache.org/ocm-search.html, I am able to write perform full text search on repository when only 'and' is required in the predicate. For example:

select * from test where name like '%abc%' and type = 'mainPage' and language = 'english'

can be written as

Filter filter = queryManager.createFilter(Paragraph.class);
filter.addContains('name', 'abc');
filter.addEqualTo('type', 'mainPage');
filter.addEqualTo('language ', 'english');

But, if I try to write the OCM implementation for the following query

select * from test where (name like '%abc%' or name like '%def%' ) and type = 'mainPage' and language = 'english'

as given bellow, I am getting empty list

Filter mainFilter= queryManager.createFilter(Paragraph.class);
Filter filter = queryManager.createFilter(Paragraph.class);
filter.addContains('name', 'abc');
Filter filter1 = queryManager.createFilter(Paragraph.class);
filter.addContains('name', 'def');
mainFilter = filter .addOrFilter(filter1 );
mainFilter .addEqualTo('type', 'mainPage');
mainFilter .addEqualTo('language ', 'english');

I think I am not able to use OCM full text search properly. Please suggest me the right way to implement OCM full text search in which predicate contains a large number of 'and' and 'or' conditions.

Was it helpful?

Solution

When I used filter.addLike('name','%def%');

It's working fine. I am still wondering why addContains() is not working.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top