Jackrabbitリポジトリに全文検索を実装しています。http://jackrabbit.apache.org/ocm-search.htmlにある例を確認した後、述語で「and」のみが必要な場合に、リポジトリで全文検索を実行するように記述できます。例えば:
select * from test where name like '%abc%' and type = 'mainPage' and language = 'english'
次のように書くことができます
Filter filter = queryManager.createFilter(Paragraph.class);
filter.addContains('name', 'abc');
filter.addEqualTo('type', 'mainPage');
filter.addEqualTo('language ', 'english');
しかし、次のクエリのOCM実装を書き込もうとすると
select * from test where (name like '%abc%' or name like '%def%' ) and type = 'mainPage' and language = 'english'
以下に示すように、私は空のリストを取得しています
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');
OCM全文検索を適切に使用できないと思います。述語に多数の「and」および「or」条件が含まれるOCM全文検索を実装する正しい方法を提案してください。