Hi, Here is my code to backup index files with Lucene Replicator, but It doesn't work well, No files were backuped. Could you check my code and give me your advice? I bolded the key code.
public class IndexFiles { private static Directory dir; private static Path bakPath; private static LocalReplicator replicator; public static LocalReplicator getLocalReplicatorInstance() { if (replicator == null) { replicator = new LocalReplicator(); } return replicator; } public static Directory getDirInstance() { if (dir == null) { try { dir = FSDirectory.open(Paths.get("/tmp/index")); } catch (IOException e) { e.printStackTrace(); } } return dir; } public static Path getPathInstance() { if (bakPath == null) { bakPath = Paths.get("/data/indexBak"); } return bakPath; } /** Index all text files under a directory. */ public static void main(String[] args) { String id = "-oderfilssdhsjs"; String title = "足球周刊"; String body = "今天野狗,我们将关注欧冠赛场,曼联在客场先进一球 的情况下,遭对手沃尔夫斯堡以总比分3:2淘汰," + "遗憾出局,将参加欧联杯的比赛,当红球星马夏尔贡献一 球,狼堡进了一个乌龙球,狼堡十号球员德拉克斯勒" + "表现惊艳,多次导演攻 势,希望22岁的他能在足球之路上走的更远。"; Callable<Boolean> callback = null; ReplicationHandler handler = null; ReplicationClient client = null; try { *handler = new IndexReplicationHandler(IndexFiles.getDirInstance(), callback);* * SourceDirectoryFactory factory = new PerSessionDirectoryFactory(IndexFiles.getPathInstance());* * client = new ReplicationClient(IndexFiles.getLocalReplicatorInstance(), handler, factory);* } catch (IOException e) { e.printStackTrace(); } try { // Directory dir = FSDirectory.open(Paths.get(indexPath)); Analyzer analyzer = new IKAnalyzer(true); IndexWriterConfig iwc = new IndexWriterConfig(analyzer); iwc.setOpenMode(OpenMode.CREATE_OR_APPEND); SnapshotDeletionPolicy snapshotter = new SnapshotDeletionPolicy(iwc.getIndexDeletionPolicy()); iwc.setIndexDeletionPolicy(snapshotter); IndexWriter writer = new IndexWriter(IndexFiles.getDirInstance(), iwc); LocalReplicator replicator = IndexFiles.getLocalReplicatorInstance(); Document doc = new Document(); Field articleId = new StringField("id", id, Field.Store.YES); doc.add(articleId); Field articleTitle = new TextField("title", title, Field.Store.YES); doc.add(articleTitle); Field articleBody = new TextField("body", body, Field.Store.NO); doc.add(articleBody); Field tag1 = new TextField("tags", "野狗", Field.Store.NO); doc.add(tag1); // Field tag2 = new TextField("tags", "运动", Field.Store.NO); // doc.add(tag2); // Field tag3 = new TextField("tags", "国足", Field.Store.NO); // doc.add(tag3); // Field tag4 = new TextField("tags", "席大大", Field.Store.NO); // doc.add(tag4); writer.updateDocument(new Term("id", id), doc); writer.commit(); *replicator.publish(new IndexRevision(writer));* * client.updateNow();* Thread.sleep(50000); writer.close(); } catch (IOException e) { System.out.println(" caught a " + e.getClass() + "\n with message: " + e.getMessage()); } catch (InterruptedException e) { e.printStackTrace(); } } } Best Regards! Yours Jean Ju