Esempio n. 1
0
        private void CreateQueryWhitelists(ICollection search_subset_uris,
                                           LNS.IndexSearcher primary_searcher,
                                           LNS.IndexSearcher secondary_searcher,
                                           LNS.BooleanQuery primary_prohibited_part_query,
                                           LNS.BooleanQuery secondary_prohibited_part_query,
                                           out LuceneBitArray primary_whitelist,
                                           out LuceneBitArray secondary_whitelist)
        {
            primary_whitelist   = null;
            secondary_whitelist = null;

            if (search_subset_uris != null && search_subset_uris.Count > 0)
            {
                primary_whitelist = new LuceneBitArray(primary_searcher);
                if (secondary_searcher != null)
                {
                    secondary_whitelist = new LuceneBitArray(secondary_searcher);
                }

                foreach (Uri uri in search_subset_uris)
                {
                    primary_whitelist.AddUri(uri);
                    if (secondary_whitelist != null)
                    {
                        secondary_whitelist.AddUri(uri);
                    }
                }
                primary_whitelist.FlushUris();
                if (secondary_whitelist != null)
                {
                    secondary_whitelist.FlushUris();
                }
            }


            // Build blacklists from our prohibited parts.

            LuceneBitArray primary_blacklist   = null;
            LuceneBitArray secondary_blacklist = null;

            if (primary_prohibited_part_query != null)
            {
                primary_blacklist = new LuceneBitArray(primary_searcher,
                                                       primary_prohibited_part_query);

                if (secondary_searcher != null)
                {
                    secondary_blacklist = new LuceneBitArray(secondary_searcher);
                    if (secondary_prohibited_part_query != null)
                    {
                        secondary_blacklist.Or(secondary_prohibited_part_query);
                    }
                    primary_blacklist.Join(secondary_blacklist);
                }
            }


            // Combine our whitelist and blacklist into just a whitelist.

            if (primary_blacklist != null)
            {
                if (primary_whitelist == null)
                {
                    primary_blacklist.Not();
                    primary_whitelist = primary_blacklist;
                }
                else
                {
                    primary_whitelist.AndNot(primary_blacklist);
                }
            }

            if (secondary_blacklist != null)
            {
                if (secondary_whitelist == null)
                {
                    secondary_blacklist.Not();
                    secondary_whitelist = secondary_blacklist;
                }
                else
                {
                    secondary_whitelist.AndNot(secondary_blacklist);
                }
            }
        }
Esempio n. 2
0
 public void Join()
 {
     PrimaryMatches.Join(SecondaryMatches);
 }
Esempio n. 3
0
		private void CreateQueryWhitelists (ICollection		search_subset_uris,
						    LNS.IndexSearcher	primary_searcher,
						    LNS.IndexSearcher	secondary_searcher,
						    LNS.BooleanQuery	primary_prohibited_part_query,
						    LNS.BooleanQuery	secondary_prohibited_part_query,
						    out LuceneBitArray	primary_whitelist,
						    out LuceneBitArray	secondary_whitelist)
		{
			primary_whitelist = null;
			secondary_whitelist = null;
			
			if (search_subset_uris != null && search_subset_uris.Count > 0) {
				primary_whitelist = new LuceneBitArray (primary_searcher);
				if (secondary_searcher != null)
					secondary_whitelist = new LuceneBitArray (secondary_searcher);

				foreach (Uri uri in search_subset_uris) {
					primary_whitelist.AddUri (uri);
					if (secondary_whitelist != null)
						secondary_whitelist.AddUri (uri);
				}
				primary_whitelist.FlushUris ();
				if (secondary_whitelist != null)
					secondary_whitelist.FlushUris ();
			}


			// Build blacklists from our prohibited parts.
			
			LuceneBitArray primary_blacklist = null;
			LuceneBitArray secondary_blacklist = null;

			if (primary_prohibited_part_query != null) {
				primary_blacklist = new LuceneBitArray (primary_searcher,
									primary_prohibited_part_query);
				
				if (secondary_searcher != null) {
					secondary_blacklist = new LuceneBitArray (secondary_searcher);
					if (secondary_prohibited_part_query != null)
						secondary_blacklist.Or (secondary_prohibited_part_query);
					primary_blacklist.Join (secondary_blacklist);
				}
			}

			
			// Combine our whitelist and blacklist into just a whitelist.
			
			if (primary_blacklist != null) {
				if (primary_whitelist == null) {
					primary_blacklist.Not ();
					primary_whitelist = primary_blacklist;
				} else {
					primary_whitelist.AndNot (primary_blacklist);
				}
			}

			if (secondary_blacklist != null) {
				if (secondary_whitelist == null) {
					secondary_blacklist.Not ();
					secondary_whitelist = secondary_blacklist;
				} else {
					secondary_whitelist.AndNot (secondary_blacklist);
				}
			}
		}