1 # ====================================================================
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
13 # ====================================================================
16 IndexReader, Term, BitSet, PythonFilter, JArray, OpenBitSet
19 # A Filter extension, with a TermDocs wrapper working around the lack of
20 # support for returning values in array arguments.
22 class SpecialsFilter(PythonFilter):
24 def __init__(self, accessor):
26 super(SpecialsFilter, self).__init__()
27 self.accessor = accessor
29 def getDocIdSet(self, reader):
31 bits = OpenBitSet(long(reader.maxDoc()))
32 isbns = self.accessor.isbns()
35 freqs = JArray(int)(1)
39 termDocs = reader.termDocs(Term("isbn", isbn))
40 count = termDocs.read(docs, freqs)
42 bits.set(long(docs[0]))
48 return "SpecialsFilter"