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

Reply via email to