1 package org.apache.lucene.index;
4 * Licensed to the Apache Software Foundation (ASF) under one or more
5 * contributor license agreements. See the NOTICE file distributed with
6 * this work for additional information regarding copyright ownership.
7 * The ASF licenses this file to You under the Apache License, Version 2.0
8 * (the "License"); you may not use this file except in compliance with
9 * the License. You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
20 import java.io.IOException;
22 final class TermsHashPerThread extends InvertedDocConsumerPerThread {
24 final TermsHash termsHash;
25 final TermsHashConsumerPerThread consumer;
26 final TermsHashPerThread nextPerThread;
28 final CharBlockPool charPool;
29 final IntBlockPool intPool;
30 final ByteBlockPool bytePool;
31 final boolean primary;
32 final DocumentsWriter.DocState docState;
34 public TermsHashPerThread(DocInverterPerThread docInverterPerThread, final TermsHash termsHash, final TermsHash nextTermsHash, final TermsHashPerThread primaryPerThread) {
35 docState = docInverterPerThread.docState;
37 this.termsHash = termsHash;
38 this.consumer = termsHash.consumer.addThread(this);
40 if (nextTermsHash != null) {
42 charPool = new CharBlockPool(termsHash.docWriter);
45 charPool = primaryPerThread.charPool;
49 intPool = new IntBlockPool(termsHash.docWriter);
50 bytePool = new ByteBlockPool(termsHash.docWriter.byteBlockAllocator);
52 if (nextTermsHash != null)
53 nextPerThread = nextTermsHash.addThread(docInverterPerThread, this);
59 InvertedDocConsumerPerField addField(DocInverterPerField docInverterPerField, final FieldInfo fieldInfo) {
60 return new TermsHashPerField(docInverterPerField, this, nextPerThread, fieldInfo);
64 synchronized public void abort() {
69 if (nextPerThread != null) {
70 nextPerThread.abort();
76 public void startDocument() throws IOException {
77 consumer.startDocument();
78 if (nextPerThread != null)
79 nextPerThread.consumer.startDocument();
83 public DocumentsWriter.DocWriter finishDocument() throws IOException {
84 final DocumentsWriter.DocWriter doc = consumer.finishDocument();
86 final DocumentsWriter.DocWriter doc2;
87 if (nextPerThread != null)
88 doc2 = nextPerThread.consumer.finishDocument();
100 void reset(boolean recyclePostings) {