summaryrefslogtreecommitdiff
path: root/htroot
diff options
context:
space:
mode:
authorMichael Peter Christen <mc@yacy.net>2012-09-24 17:05:28 +0200
committerMichael Peter Christen <mc@yacy.net>2012-09-24 17:05:28 +0200
commit1b474139dd6bcbfc918b0351a88d5fcec00c5114 (patch)
treeba5c0ba694c7207518578ece88e297d4b9290fec /htroot
parent4a3e684f8cda77f86d744972c86772d86dcc968c (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.html24
-rw-r--r--htroot/IndexControlURLs_p.java65
-rw-r--r--htroot/IndexFederated_p.html2
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">&nbsp;</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">&nbsp;</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]#&amp;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=*:*&amp;start=0&amp;rows=10</a></dd>