package org.fastcatsearch.ir.search; import java.io.File; import java.io.IOException; import java.util.ArrayList; import org.fastcatsearch.ir.common.IRException; import org.fastcatsearch.ir.settings.FieldIndexSetting; import org.fastcatsearch.ir.settings.Schema; public class FieldIndexesReader extends SelectableIndexesReader<FieldIndexReader, FieldIndexSetting> { public FieldIndexesReader() { } public FieldIndexesReader(Schema schema, File dir) throws IOException, IRException { indexSettingList = schema.schemaSetting().getFieldIndexSettingList(); int indexCount = indexSettingList == null ? 0 : indexSettingList.size(); // 색인파일열기. readerList = new ArrayList<FieldIndexReader>(indexCount); for (int i = 0; i < indexCount; i++) { FieldIndexSetting setting = indexSettingList.get(i); FieldIndexReader reader = null; try { reader = new FieldIndexReader(setting, schema.fieldSettingMap(), dir); } catch (Exception e) { logger.error("필드색인 {}로딩중 에러 >> {}", setting.getId(), e); } readerList.add(reader); } } @Override public FieldIndexesReader clone() { FieldIndexesReader reader = new FieldIndexesReader(); reader.indexSettingList = indexSettingList; reader.readerList = new ArrayList<FieldIndexReader>(readerList.size()); for (FieldIndexReader r : readerList) { FieldIndexReader newReader = null; if (r != null) { newReader = r.clone(); } reader.readerList.add(newReader); } return reader; } protected FieldIndexReader cloneReader(int sequence) { return readerList.get(sequence).clone(); } }