Hi Dancer: Found this thread with good info that may be irrelevant to your scenario but, this in particular struck me
writer.waitForMerges(); writer.commit(); replicator. replicate(new IndexRevision(writer)); writer.close(); — even though writer.close() can trigger a commit. hmmm thread: http://grokbase.com/t/lucene/java-user/143dsnrxh8/replicator-how-to-use-it <http://grokbase.com/t/lucene/java-user/143dsnrxh8/replicator-how-to-use-it> -will > On Jan 23, 2016, at 4:39 AM, Dancer <462921...@qq.com> wrote: > > 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? > > > public class IndexFiles { > > > private static Directory dir; > private static Path bakPath; > private static LocalReplicator replicator; > > > public static LocalReplicator getInstance() { > 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("/tmp/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岁的他能在足球之路上走的更远。"; > 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(new KeepOnlyLastCommitDeletionPolicy()); > iwc.setIndexDeletionPolicy(snapshotter); > IndexWriter writer = new > IndexWriter(IndexFiles.getDirInstance(), iwc);// the > LocalReplicator replicator = IndexFiles.getInstance(); > > > 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(); > ReplicatorThread p = new ReplicatorThread(); > new Thread(p, "ReplicatorThread").start(); > replicator.publish(new IndexRevision(writer)); > 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(); > } > } > } > > > class ReplicatorThread implements Runnable { > > > public void run() { > Callable<Boolean> callback = null; > ReplicationHandler handler = null; > try { > handler = new > IndexReplicationHandler(IndexFiles.getDirInstance(), callback); > SourceDirectoryFactory factory = new > PerSessionDirectoryFactory(IndexFiles.getPathInstance()); > ReplicationClient client = new > ReplicationClient(IndexFiles.getInstance(), handler, factory); > client.updateNow(); > try { > Thread.sleep(10000); > } catch (InterruptedException e) { > e.printStackTrace(); > } > } catch (IOException e) { > e.printStackTrace(); > } > System.out.println("death"); > } > } > > Best Regards. > Jean Ju