public void TestSingleFilter() { ChainedFilter chain = GetChainedFilter(new Filter[] { dateFilter }, null); int numHits = searcher.Search(query, chain, 1000).TotalHits; Assert.AreEqual(MAX, numHits); chain = new ChainedFilter(new Filter[] { bobFilter }); numHits = searcher.Search(query, chain, 1000).TotalHits; Assert.AreEqual(MAX / 2, numHits); chain = GetChainedFilter(new Filter[] { bobFilter }, new ChainedFilter.Logic[] { ChainedFilter.Logic.AND }); TopDocs hits = searcher.Search(query, chain, 1000); numHits = hits.TotalHits; Assert.AreEqual(MAX / 2, numHits); Assert.AreEqual("bob", searcher.Doc(hits.ScoreDocs[0].doc).Get("owner")); chain = GetChainedFilter(new Filter[] { bobFilter }, new ChainedFilter.Logic[] { ChainedFilter.Logic.ANDNOT }); hits = searcher.Search(query, chain, 1000); numHits = hits.TotalHits; Assert.AreEqual(MAX / 2, numHits); Assert.AreEqual("sue", searcher.Doc(hits.ScoreDocs[0].doc).Get("owner")); }
public void TestWithCachingFilter() { Directory dir = new RAMDirectory(); Analyzer analyzer = new WhitespaceAnalyzer(); IndexWriter writer = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.LIMITED); writer.Close(); Searcher searcher = new IndexSearcher(dir, true); Query query = new TermQuery(new Term("none", "none")); QueryWrapperFilter queryFilter = new QueryWrapperFilter(query); CachingWrapperFilter cachingFilter = new CachingWrapperFilter(queryFilter); searcher.Search(query, cachingFilter, 1); CachingWrapperFilter cachingFilter2 = new CachingWrapperFilter(queryFilter); Filter[] chain = new Filter[2]; chain[0] = cachingFilter; chain[1] = cachingFilter2; ChainedFilter cf = new ChainedFilter(chain); // throws java.lang.ClassCastException: org.apache.lucene.util.OpenBitSet cannot be cast to java.util.BitSet searcher.Search(new MatchAllDocsQuery(), cf, 1); }
public void TestOR() { ChainedFilter chain = GetChainedFilter( new Filter[] { sueFilter, bobFilter }, null); int numHits = searcher.Search(query, chain, 1000).TotalHits; Assert.AreEqual(MAX, numHits, "OR matches all"); }
public void TestXOR() { ChainedFilter chain = GetChainedFilter( new Filter[] { dateFilter, bobFilter }, ChainedFilter.Logic.XOR); TopDocs hits = searcher.Search(query, chain, 1000); Assert.AreEqual(MAX / 2, hits.TotalHits, "XOR matches sue"); Assert.AreEqual("sue", searcher.Doc(hits.ScoreDocs[0].doc).Get("owner")); }
public bool TryGetFilter(bool includeUnlisted, bool includePrerelease, string curatedFeed, out Filter filter) { Filter visibilityFilter = _latest[includeUnlisted ? 1 : 0][includePrerelease ? 1 : 0]; Filter curatedFeedFilter; if (!string.IsNullOrEmpty(curatedFeed) && _curatedFeeds.TryGetValue(curatedFeed, out curatedFeedFilter)) { filter = new ChainedFilter(new[] { visibilityFilter, curatedFeedFilter }, ChainedFilter.Logic.AND); return true; } filter = visibilityFilter; return true; }
public void TestANDNOT() { ChainedFilter chain = GetChainedFilter( new Filter[] { dateFilter, sueFilter }, new ChainedFilter.Logic[] { ChainedFilter.Logic.AND, ChainedFilter.Logic.ANDNOT }); TopDocs hits = searcher.Search(query, chain, 1000); Assert.AreEqual(MAX / 2, hits.TotalHits, "ANDNOT matches just bob"); Assert.AreEqual("bob", searcher.Doc(hits.ScoreDocs[0].doc).Get("owner")); chain = GetChainedFilter( new Filter[] { bobFilter, bobFilter }, new ChainedFilter.Logic[] { ChainedFilter.Logic.ANDNOT, ChainedFilter.Logic.ANDNOT }); hits = searcher.Search(query, chain, 1000); Assert.AreEqual(MAX / 2, hits.TotalHits, "ANDNOT bob ANDNOT bob matches all sues"); Assert.AreEqual("sue", searcher.Doc(hits.ScoreDocs[0].doc).Get("owner")); }
private ChainedFilter GetChainedFilter(Filter[] chain, ChainedFilter.Logic logic) { return new ChainedFilter(chain, logic); }
private ChainedFilter GetChainedFilter(Filter[] chain, ChainedFilter.Logic[] logic) { if (logic == null) { return new ChainedFilter(chain); } else { return new ChainedFilter(chain, logic); } }
Filter GetVisibilityFilter(string tenantId) { Filter tenantFilter; if (tenantId != null && _filters.TryGetValue(tenantId, out tenantFilter)) { Filter chainedFilter = new ChainedFilter(new[] { _publicFilter, tenantFilter }, ChainedFilter.Logic.OR); return chainedFilter; } else { return _publicFilter; } }