diff options
| author | Michael Peter Christen <mc@yacy.net> | 2012-09-24 17:05:28 +0200 |
|---|---|---|
| committer | Michael Peter Christen <mc@yacy.net> | 2012-09-24 17:05:28 +0200 |
| commit | 1b474139dd6bcbfc918b0351a88d5fcec00c5114 (patch) | |
| tree | ba5c0ba694c7207518578ece88e297d4b9290fec /htroot | |
| parent | 4a3e684f8cda77f86d744972c86772d86dcc968c (diff) | |
used the new zip writer/reader to add a solr dump process: the whole
solr index can be written to a zip dump and also restored during runtime
Diffstat (limited to 'htroot')
| -rw-r--r-- | htroot/IndexControlURLs_p.html | 24 | ||||
| -rw-r--r-- | htroot/IndexControlURLs_p.java | 65 | ||||
| -rw-r--r-- | htroot/IndexFederated_p.html | 2 |
3 files changed, 59 insertions, 32 deletions
diff --git a/htroot/IndexControlURLs_p.html b/htroot/IndexControlURLs_p.html index 77abc40a3..c9d363ae9 100644 --- a/htroot/IndexControlURLs_p.html +++ b/htroot/IndexControlURLs_p.html @@ -125,6 +125,26 @@ function updatepage(str) { </table>
#(/statisticslines)#
+ #(dumprestore)#::
+ <form action="IndexControlURLs_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
+ <fieldset><legend>Dump and Restore of Solr Index</legend>
+ <dl>
+ <dt class="TableCellLight"> </dt>
+ <dd><input type="submit" name="indexdump" value="Create Dump" class="submitready" style="width:240px;"/>
+ </dd>
+ </dl>
+ <dl>
+ <dt class="TableCellDark">Dump File</dt>
+ <dd><input type="text" name="dumpfile" value="#[dumpfile]#" size="80" maxlength="250" />
+ </dd>
+ <dt class="TableCellLight"> </dt>
+ <dd><input type="submit" name="indexrestore" value="Restore Dump" class="submitready" style="width:240px;"/>
+ </dd>
+ </dl>
+ </fieldset>
+ </form>::
+ #(/dumprestore)#
+
#(lurlexport)#::
<form action="IndexControlURLs_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
<fieldset><legend>Loaded URL Export</legend>
@@ -162,6 +182,10 @@ function updatepage(str) { <div class="error">Export to file #[exportfile]# failed: #[exportfailmsg]#</div>::
#(/lurlexporterror)#
+ #(indexdump)#::
+ <div class="commit">Stored a solr dump to file #[dumpfile]#</div>::
+ #(/indexdump)#
+
#(urlhashsimilar)#::<p>Sequential List of URL-Hashes:<br />
#{rows}#
#{cols}#<a href="/IndexControlURLs_p.html?urlhash=#[urlHash]#&urlhashsearch=1" class="tt">#[urlHash]#</a> #{/cols}#<br />
diff --git a/htroot/IndexControlURLs_p.java b/htroot/IndexControlURLs_p.java index 6b106b7bf..8fdc39b9c 100644 --- a/htroot/IndexControlURLs_p.java +++ b/htroot/IndexControlURLs_p.java @@ -29,6 +29,7 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.util.Iterator; +import java.util.List; import net.yacy.cora.date.GenericFormatter; import net.yacy.cora.document.ASCII; @@ -67,6 +68,12 @@ public class IndexControlURLs_p { prop.put("statistics_lines", 100); prop.put("statisticslines", 0); prop.put("reload", 0); + prop.put("indexdump", 0); + prop.put("lurlexport", 0); + prop.put("reload", 0); + prop.put("dumprestore", 1); + List<File> dumpFiles = segment.fulltext().dumpFiles(); + prop.put("dumprestore_dumpfile", dumpFiles.size() == 0 ? "" : dumpFiles.get(dumpFiles.size() - 1).getAbsolutePath()); // show export messages final Fulltext.Export export = segment.fulltext().export(); @@ -127,8 +134,6 @@ public class IndexControlURLs_p { if (post.containsKey("urlhashdeleteall")) { int i = segment.removeAllUrlReferences(urlhash.getBytes(), sb.loader, CacheStrategy.IFEXIST); prop.put("result", "Deleted URL and " + i + " references from " + i + " word indexes."); - prop.put("lurlexport", 0); - prop.put("reload", 0); } if (post.containsKey("urlhashdelete")) { @@ -141,8 +146,6 @@ public class IndexControlURLs_p { sb.urlRemove(segment, urlhash.getBytes()); prop.putHTML("result", "Removed URL " + urlstring); } - prop.put("lurlexport", 0); - prop.put("reload", 0); } if (post.containsKey("urldelete")) { @@ -157,8 +160,6 @@ public class IndexControlURLs_p { sb.urlRemove(segment, urlhash.getBytes()); prop.putHTML("result", "Removed URL " + urlstring); } - prop.put("lurlexport", 0); - prop.put("reload", 0); } if (post.containsKey("urlstringsearch")) { @@ -179,8 +180,6 @@ public class IndexControlURLs_p { prop.putHTML("result", "bad url: " + urlstring); prop.put("urlhash", ""); } - prop.put("lurlexport", 0); - prop.put("reload", 0); } if (post.containsKey("urlhashsearch")) { @@ -192,8 +191,6 @@ public class IndexControlURLs_p { prop.putAll(genUrlProfile(segment, entry, urlhash)); prop.put("statistics", 0); } - prop.put("lurlexport", 0); - prop.put("reload", 0); } // generate list @@ -218,8 +215,6 @@ public class IndexControlURLs_p { prop.put("statistics", 0); prop.put("urlhashsimilar_rows", rows); prop.put("result", result.toString()); - prop.put("lurlexport", 0); - prop.put("reload", 0); } if (post.containsKey("lurlexport")) { @@ -232,23 +227,34 @@ public class IndexControlURLs_p { if (fname.endsWith("rss")) format = 2; // extend export file name - String s = post.get("exportfile", ""); - if (s.indexOf('.',0) < 0) { - if (format == 0) s = s + ".txt"; - if (format == 1) s = s + ".html"; - if (format == 2) s = s + ".xml"; - } - final File f = new File(s); - f.getParentFile().mkdirs(); - final String filter = post.get("exportfilter", ".*"); - final Fulltext.Export running = segment.fulltext().export(f, filter, null, format, dom); + String s = post.get("exportfile", ""); + if (s.indexOf('.',0) < 0) { + if (format == 0) s = s + ".txt"; + if (format == 1) s = s + ".html"; + if (format == 2) s = s + ".xml"; + } + final File f = new File(s); + f.getParentFile().mkdirs(); + final String filter = post.get("exportfilter", ".*"); + final Fulltext.Export running = segment.fulltext().export(f, filter, null, format, dom); - prop.put("lurlexport_exportfile", s); - prop.put("lurlexport_urlcount", running.count()); - if ((running != null) && (running.failed() == null)) { - prop.put("lurlexport", 2); - } - prop.put("reload", 1); + prop.put("lurlexport_exportfile", s); + prop.put("lurlexport_urlcount", running.count()); + if ((running != null) && (running.failed() == null)) { + prop.put("lurlexport", 2); + } + prop.put("reload", 1); + } + + if (post.containsKey("indexdump")) { + final File dump = segment.fulltext().dumpSolr(); + prop.put("indexdump", 1); + prop.put("indexdump_dumpfile", dump.getAbsolutePath()); + } + + if (post.containsKey("indexrestore")) { + final File dump = new File(post.get("dumpfile", "")); + segment.fulltext().restoreSolr(dump); } if (post.containsKey("deletedomain")) { @@ -261,7 +267,6 @@ public class IndexControlURLs_p { } // trigger the loading of the table post.put("statistics", ""); - prop.put("reload", 0); } if (post.containsKey("statistics")) { @@ -289,8 +294,6 @@ public class IndexControlURLs_p { } prop.put("statisticslines_domains", cnt); prop.put("statisticslines", 1); - prop.put("lurlexport", 0); - prop.put("reload", 0); } // insert constants diff --git a/htroot/IndexFederated_p.html b/htroot/IndexFederated_p.html index c0e3741b6..3d5de5b18 100644 --- a/htroot/IndexFederated_p.html +++ b/htroot/IndexFederated_p.html @@ -23,7 +23,7 @@ <legend> Local Search Index </legend> - This is an experimental switchboard to test an index migration from embedded metadata to embedded solr. The 'classic' configuration is rwi + metadata switched on. The future configuration is rwi + solr switched on. + This is a switchboard for the usage of embedded metadata to embedded solr. The rwi index is necessary for index transmission and shall be switched off in future portalmode configurations. <dl> <dt><input type="checkbox" name="core.service.fulltext" id="core.service.fulltext" #(core.service.fulltext.checked)#:: checked="checked"#(/core.service.fulltext.checked)# /></dt><dd>url metadata and embedded solr fulltext search index, interface at: <a href="/solr/select?q=*:*&start=0&rows=10" target="_blank">/solr/select?q=*:*&start=0&rows=10</a></dd> |
