Inheritance: Lucene.Net.Search.Filter
コード例 #1
0
        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"));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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"));
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
 private ChainedFilter GetChainedFilter(Filter[] chain, ChainedFilter.Logic logic)
 {
     return new ChainedFilter(chain, logic);
 }
コード例 #8
0
 private ChainedFilter GetChainedFilter(Filter[] chain, ChainedFilter.Logic[] logic)
 {
     if (logic == null)
     {
         return new ChainedFilter(chain);
     }
     else
     {
         return new ChainedFilter(chain, logic);
     }
 }
コード例 #9
0
        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);
        }
コード例 #10
0
        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"));
        }
コード例 #11
0
 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;
     }
 }