具有字段依赖性的Lucene查询

时间:2012-05-09 16:51:36

标签: lucene.net sitecore

我有一个带有_IsPrivate字段的文档的lucene索引。我需要查询索引以检索_IsPrivate == false或_IsPrivate == true和_Owner == me的所有文档。我一直在尝试以下lucene查询,但我没有得到预期的结果......

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

结果是我只获得了我拥有的文件(公共和私人)。

我有什么想法可以改写我的查询吗?

1 个答案:

答案 0 :(得分:3)

我会使用“BooleanQuery”来执行这种操作。您为每个完整的搜索语句创建了2个查询,然后将它们与“SHOULD”运算符一起添加。

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);

这可能有点麻烦,但我真的很想以这种方式组织我的查询。

希望它有所帮助。