public String getSegmentInfo() { if (_dirMgr == null || !_dirMgr.exists()) { return ""; } Directory dir = null; try { dir = _dirMgr.getDirectory(); } catch (Exception e) { return ""; } if (dir == null) return ""; return IndexUtil.getSegmentsInfo(dir); }
public String getIndexDir() { return _dirMgr.getPath(); }
/** * @return the String representation of version for JMX purpose * @throws IOException */ public String getCurrentDiskVersion() throws IOException { return _dirMgr.getVersion(); }
if (!dirMgr.exists()) { return null; Directory dir = dirMgr.getDirectory(); log.debug("opening index reader at: " + dirMgr.getPath());
/** * Opens an index modifier. * @param analyzer Analyzer * @return IndexModifer instance */ public IndexWriter openIndexWriter(Analyzer analyzer,Similarity similarity) throws IOException { if(_indexWriter != null) return _indexWriter; Directory directory = _dirMgr.getDirectory(true); log.info("opening index writer at: "+_dirMgr.getPath()); ZoieMergePolicy mergePolicy = new ZoieMergePolicy(); mergePolicy.setMergePolicyParams(_mergePolicyParams); // hao: autocommit is set to false with this constructor IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_34,analyzer); config.setOpenMode(OpenMode.CREATE_OR_APPEND); config.setIndexDeletionPolicy(_deletionPolicy); config.setMergeScheduler(_mergeScheduler); config.setMergePolicy(mergePolicy); config.setReaderPooling(false); if (similarity!=null){ config.setSimilarity(similarity); } config.setRAMBufferSizeMB(5); IndexWriter idxWriter = new IndexWriter(directory,config); _indexWriter = idxWriter; return idxWriter; }
@Override protected IndexReader openIndexReaderForDelete() throws IOException { Directory directory = _dirMgr.getDirectory(true); if (IndexReader.indexExists(directory)){ return IndexReader.open(directory, _deletionPolicy, false); } else{ return null; } }
/** * Writes the current version/SCN to the disk */ @Override public void setVersion(String version) throws IOException { _dirMgr.setVersion(version); }
/** * Purges an index */ public void purgeIndex() { log.info("purging index ..."); _diskIndex.clearDeletes(); _diskIndex.refresh(); _diskIndex.closeIndexWriter(); _dirMgr.purge(); _diskIndex.refresh(); if (_mem.get_memIndexA()!=null){_mem.get_memIndexA().close();} if (_mem.get_memIndexB()!=null){_mem.get_memIndexB().close();} RAMSearchIndex<R> memIndexA = _ramIndexFactory.newInstance(_diskIndex.getVersion(), _indexReaderDecorator, this); Mem<R> mem = new Mem<R>(memIndexA, null, memIndexA, null, null); _mem = mem; log.info("index purged"); }
public long writeTo(WritableByteChannel channel) throws IOException { // format: // <format_version> <sig_len> <sig_data> { <idx_file_name_len> <idx_file_name> <idx_file_len> <idx_file_data> }... long amount = 0; // format version amount += ChannelUtil.writeInt(channel, 1); // index signature ByteArrayOutputStream baos = new ByteArrayOutputStream(); _sig.save(baos); byte[] sigBytes = baos.toByteArray(); amount += ChannelUtil.writeLong(channel, (long)sigBytes.length); // data length amount += channel.write(ByteBuffer.wrap(sigBytes)); // data // index files Collection<String> fileNames = _snapshot.getFileNames(); amount += ChannelUtil.writeInt(channel, fileNames.size()); // number of files for(String fileName : fileNames) { amount += ChannelUtil.writeString(channel, fileName); amount += _dirMgr.transferFromFileToChannel(fileName, channel); } return amount; }
public static void readSnapshot(ReadableByteChannel channel, DirectoryManager dirMgr) throws IOException { // format version int formatVersion = ChannelUtil.readInt(channel); if (formatVersion != 1) { throw new IOException("snapshot format version mismatch [" + formatVersion + "]"); } // index signature if (!dirMgr.transferFromChannelToFile(channel, DirectoryManager.INDEX_DIRECTORY)) { throw new IOException("bad snapshot file"); } // index files int numFiles = ChannelUtil.readInt(channel); // number of files if (numFiles < 0) { throw new IOException("bad snapshot file"); } while (numFiles-- > 0) { String fileName = ChannelUtil.readString(channel); if (fileName == null) { throw new IOException("bad snapshot file"); } if (!dirMgr.transferFromChannelToFile(channel, fileName)) { throw new IOException("bad snapshot file"); } } } }
if (!dirMgr.exists()) { return null; Directory dir = dirMgr.getDirectory(); log.debug("opening index reader at: " + dirMgr.getPath());
Directory directory = _dirMgr.getDirectory(true); log.info("opening index writer at: " + _dirMgr.getPath());
public DiskSearchIndex(DirectoryManager dirMgr, IndexReaderDecorator<R> decorator, SearchIndexManager<R> idxMgr) { super(idxMgr, true); _dirMgr = dirMgr; // create index signature file try { _dirMgr.getDirectory(true); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } _mergePolicyParams = new MergePolicyParams(); _dispenser = new IndexReaderDispenser<R>(_dirMgr, decorator, this); _mergeScheduler = new SerialMergeScheduler(); _deletionPolicy = null; }
/** * Writes the current version/SCN to the disk */ @Override public void setVersion(String version) throws IOException { _dirMgr.setVersion(version); }
/** * Purges an index */ public void purgeIndex() { log.info("purging index ..."); _diskIndex.clearDeletes(); _diskIndex.refresh(); _diskIndex.closeIndexWriter(); _dirMgr.purge(); _diskIndex.refresh(); if (_mem.get_memIndexA() != null) { _mem.get_memIndexA().close(); } if (_mem.get_memIndexB() != null) { _mem.get_memIndexB().close(); } RAMSearchIndex<R> memIndexA = _ramIndexFactory.newInstance(_diskIndex.getVersion(), _indexReaderDecorator, this); Mem<R> mem = new Mem<R>(memIndexA, null, memIndexA, null, null); synchronized (_memLock) { _mem = mem; } log.info("index purged"); }
public long writeTo(WritableByteChannel channel) throws IOException { // format: // <format_version> <sig_len> <sig_data> { <idx_file_name_len> <idx_file_name> <idx_file_len> // <idx_file_data> }... long amount = 0; // format version amount += ChannelUtil.writeInt(channel, 1); // index signature ByteArrayOutputStream baos = new ByteArrayOutputStream(); _sig.save(baos); byte[] sigBytes = baos.toByteArray(); amount += ChannelUtil.writeLong(channel, (long) sigBytes.length); // data length amount += channel.write(ByteBuffer.wrap(sigBytes)); // data // index files Collection<String> fileNames = _snapshot.getFileNames(); amount += ChannelUtil.writeInt(channel, fileNames.size()); // number of files for (String fileName : fileNames) { amount += ChannelUtil.writeString(channel, fileName); amount += _dirMgr.transferFromFileToChannel(fileName, channel); } return amount; }
public static void readSnapshot(ReadableByteChannel channel, DirectoryManager dirMgr) throws IOException { // format version int formatVersion = ChannelUtil.readInt(channel); if (formatVersion != 1) { throw new IOException("snapshot format version mismatch [" + formatVersion + "]"); } // index signature if (!dirMgr.transferFromChannelToFile(channel, DirectoryManager.INDEX_DIRECTORY)) { throw new IOException("bad snapshot file"); } // index files int numFiles = ChannelUtil.readInt(channel); // number of files if (numFiles < 0) { throw new IOException("bad snapshot file"); } while (numFiles-- > 0) { String fileName = ChannelUtil.readString(channel); if (fileName == null) { throw new IOException("bad snapshot file"); } if (!dirMgr.transferFromChannelToFile(channel, fileName)) { throw new IOException("bad snapshot file"); } } } }
public int getSegmentCount() throws IOException { if (_dirMgr == null || !_dirMgr.exists()) { return 0; } Directory dir = null; try { dir = _dirMgr.getDirectory(); } catch (Exception e) { return 0; } if (dir == null) return 0; return IndexUtil.getNumSegments(dir); }
throws IOException if (!dirMgr.exists()){ return null; Directory dir= dirMgr.getDirectory(); if(log.isDebugEnabled()) log.debug("opening index reader at: "+dirMgr.getPath());
Directory directory = _dirMgr.getDirectory(true); log.info("opening index writer at: " + _dirMgr.getPath());