Hi,
I am using the Directory class's copy method to periodically sync
my RAM based index to a file based index that's supposed to serve
as a hot backup. I want to know if this is the right way to
maintain a periodic backup of my RAM based index and, if Yes, then
is it reliable in a production instance with almost 12 to 15 GB of
Lucene index loaded into the RAMDirectory.
Any advice is greatly appreciated.
I have a sample working code snippet here:
public class RAMtoFILEcopy_test1 {
static String[] queries = {
"a OR b AND c",
"(a OR b) AND c",
"a OR (b AND c)",
"a AND b",
"a AND b OR c AND d",
"(a AND b) OR (c AND d)",
"a AND (b OR c) AND d",
"((a AND b) OR c) AND d",
"a AND (b OR (c AND d))",
"a AND b AND c AND d",
"a OR b AND NOT c",
"(a OR b) AND NOT c",
"a OR (b AND NOT c)",
"a AND NOT d",
"a AND NOT b OR c AND NOT d",
"(a AND NOT b) OR (c AND NOT d)",
"a AND NOT (b OR c) AND NOT d",
"((a AND NOT b) OR c) AND NOT d",
"a AND NOT (b OR (c AND NOT d))",
"a AND NOT b AND NOT c AND NOT d",
"a OR NOT b",
"a OR NOT a",
"a b",
"a b c",
"a b (c d e)",
"+a +b",
"a -b",
"a +b -c",
"+a b -c",
"+a -b c",
"a -b -c",
"-a b c",
"a OR b c AND d",
"a OR b c",
"a AND b c",
"a OR b c OR d",
"a OR b c d OR e",
"a AND b c AND d",
"a AND b c d AND e"
};
public static void main(String argv[]) throws Exception {
Directory dir = new RAMDirectory();
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(dir, analyzer, true);
for ( int i=0; i < queries.length; i++ ) {
Document doc = new Document();
doc.add(new Field("text", queries[i], Field.Store.YES,
Field.Index.TOKENIZED));
writer.addDocument(doc);
}
writer.close();
Directory dir2 = FSDirectory.getDirectory("/tmp/
TestHotbackup", true);
dir.copy(dir, dir2, true);
}
}
Thanks a lot,
Roger
_____________________________________________________________________
_______________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs