0

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全文検索を実装する正しい方法を提案してください。

4

1 に答える 1

0

filter.addLike('name'、'%def%');を使用したとき

正常に動作しています。なぜaddContains()が機能しないのか疑問に思っています。

于 2013-02-19T15:23:36.000 に答える