1

_IsPrivate フィールドを持つドキュメントの lucene インデックスがあります。_IsPrivate == false または _IsPrivate == true かつ _Owner == me であるすべてのドキュメントを取得するには、インデックスにクエリを実行する必要があります。次の lucene クエリを試してみましたが、期待した結果が得られません...

_IsPrivate:false OR (_IsPrivate:true  AND _Owner:me)

その結果、私が所有する (公開および非公開の) ドキュメントのみが取得されます。

クエリを書き直す方法はありますか?

4

1 に答える 1

3

I would use "BooleanQuery" to performe that kind of operation. You make 2 queries, one for each complete search statement, and then add them together with the "SHOULD" operator.

var bq = new BooleanQuery();
var bq1 = new BooleanQuery();
bg1.add(new Term("_IsPrivate", "false"), BooleanClause.Occur.MUST);
var bq2 = new BooleanQuery();
bg2.add(new Term("_IsPrivate", "true"), BooleanClause.Occur.MUST);
bg2.add(new Term("_Owner", "me"), BooleanClause.Occur.MUST);
bq.add(bq1, BooleanClause.Occur.SHOULD);
bq.add(bq2, BooleanClause.Occur.SHOULD);

It might be a bit cumbersome, but I really like to organise my queries this way.

Hope it helps.

于 2012-05-09T18:22:03.097 に答える