1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 using System; 19 20 using IndexReader = Lucene.Net.Index.IndexReader; 21 using DocIdBitSet = Lucene.Net.Util.DocIdBitSet; 22 23 namespace Lucene.Net.Search 24 { 25 26 /// <summary>Abstract base class for restricting which documents may be returned during searching.</summary> 27 [Serializable] 28 public abstract class Filter 29 { 30 ///<summary> 31 /// <para>Creates a <see cref="DocIdSet" /> enumerating the documents that should be 32 /// permitted in search results. <b>NOTE:</b> null can be 33 /// returned if no documents are accepted by this Filter.</para> 34 /// <p/> 35 /// <para>Note: This method will be called once per segment in 36 /// the index during searching. The returned <see cref="DocIdSet" /> 37 /// must refer to document IDs for that segment, not for 38 /// the top-level reader.</para> 39 ///</summary> 40 /// <returns> a DocIdSet that provides the documents which should be permitted or 41 /// prohibited in search results. <b>NOTE:</b> null can be returned if 42 /// no documents will be accepted by this Filter. 43 /// </returns> 44 /// <param name="reader"> 45 /// A <see cref="IndexReader" /> instance opened on the index currently 46 /// searched on. Note, it is likely that the provided reader does not 47 /// represent the whole underlying index i.e. if the index has more than 48 /// one segment the given reader only represents a single segment. 49 /// </param> 50 /// <seealso cref="DocIdBitSet"> 51 /// </seealso> GetDocIdSet(IndexReader reader)52 public abstract DocIdSet GetDocIdSet(IndexReader reader); 53 } 54 }