diff --git a/htroot/SettingsAck_p.java b/htroot/SettingsAck_p.java
index 3fc1414b9..88264ff1c 100644
--- a/htroot/SettingsAck_p.java
+++ b/htroot/SettingsAck_p.java
@@ -60,7 +60,6 @@ import de.anomic.http.httpRemoteProxyConfig;
import de.anomic.http.httpd;
import de.anomic.http.httpdProxyHandler;
import de.anomic.plasma.plasmaParser;
-import de.anomic.plasma.plasmaParserConfig;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCodings;
import de.anomic.server.serverCore;
diff --git a/htroot/index.html b/htroot/index.html
index 6ea49e8d7..eccc3f364 100644
--- a/htroot/index.html
+++ b/htroot/index.html
@@ -7,6 +7,14 @@
#%env/templates/header.template%#
+
+
+

P2P WEB SEARCH
#[promoteSearchPageGreeting]#
@@ -109,10 +117,13 @@ from 'late' peers.
#{results}#
-#[description]#
-#(snippet)#::#[text]#
#(/snippet)#
-#[urlname]#
-#[date]# | YBR-#[ybr]# | Info
+
+
+
#[description]#
+#(snippet)#::
#[text]#
#(/snippet)#
+
#[urlname]#
+
#[date]# | YBR-#[ybr]# | Info
+
#{/results}#
diff --git a/htroot/index.java b/htroot/index.java
index c0f8f9991..0da96b54c 100644
--- a/htroot/index.java
+++ b/htroot/index.java
@@ -135,6 +135,12 @@ public class index {
kelondroMSetTools.excludeDestructive(query, plasmaSwitchboard.stopwords);
}
+ // if a minus-button was hit, remove a special reference first
+ if (post.containsKey("deleteref")) {
+ final String delHash = (String) post.get("deleteref", "");
+ sb.removeReferences(delHash, query);
+ }
+
// prepare search order
final String order = (String) post.get("order", "");
final int count = Integer.parseInt((String) post.get("count", "10"));
@@ -185,7 +191,7 @@ public class index {
if (((String) post.get("search", "")).length() < 3) {
prop.put("num-results", 2); // no results - at least 3 chars
} else {
- prop.put("num-results", 1);//no results
+ prop.put("num-results", 1); //no results
}
} else {
final int linkcount = Integer.parseInt(prop.get("linkcount", "0"));
diff --git a/htroot/yacy/crawlOrder.java b/htroot/yacy/crawlOrder.java
index f33382c0d..3758e64db 100644
--- a/htroot/yacy/crawlOrder.java
+++ b/htroot/yacy/crawlOrder.java
@@ -51,6 +51,7 @@ import de.anomic.htmlFilter.htmlFilterContentScraper;
import de.anomic.http.httpHeader;
import de.anomic.plasma.plasmaCrawlLURL;
import de.anomic.plasma.plasmaSwitchboard;
+import de.anomic.plasma.plasmaURL;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.tools.crypt;
@@ -242,7 +243,7 @@ public final class crawlOrder {
// case where we have already the url loaded;
reason = reasonString;
// send lurl-Entry as response
- plasmaCrawlLURL.Entry entry = switchboard.urlPool.loadedURL.getEntry(plasmaCrawlLURL.urlHash(url));
+ plasmaCrawlLURL.Entry entry = switchboard.urlPool.loadedURL.getEntry(plasmaURL.urlHash(url));
if (entry != null) {
response = "double";
switchboard.urlPool.loadedURL.notifyGCrawl(entry.hash(), iam, youare);
diff --git a/source/de/anomic/net/ftpc.java b/source/de/anomic/net/ftpc.java
index 1f65513d0..082912720 100644
--- a/source/de/anomic/net/ftpc.java
+++ b/source/de/anomic/net/ftpc.java
@@ -63,9 +63,9 @@ import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.DateFormat;
+import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
-import java.util.GregorianCalendar;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.TimeZone;
@@ -1618,7 +1618,7 @@ cd ..
private void get(String fileDest, String fileName) throws IOException {
// store time for statistics
- long start = GregorianCalendar.getInstance(GMTTimeZone).getTime().getTime();
+ long start = Calendar.getInstance(GMTTimeZone).getTime().getTime();
// prepare data channel
if (DataSocketPassiveMode) createPassiveDataPort(); else createActiveDataPort();
@@ -1674,7 +1674,7 @@ cd ..
//if (!success) throw new IOException(reply);
// write statistics
- long stop = GregorianCalendar.getInstance(GMTTimeZone).getTime().getTime();
+ long stop = Calendar.getInstance(GMTTimeZone).getTime().getTime();
out.print("---- downloaded " +
((length < 2048) ? length + " bytes" : ((int) length / 1024) + " kbytes") +
" in " +
diff --git a/source/de/anomic/plasma/plasmaSearchQuery.java b/source/de/anomic/plasma/plasmaSearchQuery.java
index 0652f158f..7387d48fb 100644
--- a/source/de/anomic/plasma/plasmaSearchQuery.java
+++ b/source/de/anomic/plasma/plasmaSearchQuery.java
@@ -46,15 +46,15 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;
-import de.anomic.htmlFilter.htmlFilterContentScraper;
+import de.anomic.htmlFilter.htmlFilterAbstractScraper;
import de.anomic.kelondro.kelondroMSetTools;
import de.anomic.server.serverByteBuffer;
public final class plasmaSearchQuery {
- public static final String ORDER_QUALITY = "quality";
- public static final String ORDER_DATE = "date";
- public static final String ORDER_YBR = "ybr";
+ public static final String ORDER_QUALITY = "Quality";
+ public static final String ORDER_DATE = "Date";
+ public static final String ORDER_YBR = "YBR";
public static final int SEARCHDOM_LOCAL = 0;
public static final int SEARCHDOM_GROUPDHT = 1;
@@ -102,6 +102,10 @@ public final class plasmaSearchQuery {
this.domMaxTargets = -1;
}
+ public String orderString() {
+ return order[0] + "-" + order[1] + "-" + order[2];
+ }
+
public static Set words2hashes(String[] words) {
TreeSet hashes = new TreeSet();
for (int i = 0; i < words.length; i++) hashes.add(plasmaWordIndexEntry.word2hash(words[i]));
@@ -117,7 +121,7 @@ public final class plasmaSearchQuery {
public static TreeSet cleanQuery(String words) {
// convert Umlaute
- words = htmlFilterContentScraper.convertUmlaute(new serverByteBuffer(words.getBytes())).toString();
+ words = htmlFilterAbstractScraper.convertUmlaute(new serverByteBuffer(words.getBytes())).toString();
// remove funny symbols
final String seps = "' .,:/-&";
@@ -135,6 +139,32 @@ public final class plasmaSearchQuery {
return query;
}
+ public int size() {
+ return queryHashes.size();
+ }
+
+ public String words(String separator) {
+ StringBuffer result = new StringBuffer(8 * queryWords.size());
+ Iterator i = queryWords.iterator();
+ if (i.hasNext()) result.append((String) i.next());
+ while (i.hasNext()) {
+ result.append(separator);
+ result.append((String) i.next());
+ }
+ return result.toString();
+ }
+
+ public String hashes(String separator) {
+ StringBuffer result = new StringBuffer(8 * queryHashes.size());
+ Iterator i = queryHashes.iterator();
+ if (i.hasNext()) result.append((String) i.next());
+ while (i.hasNext()) {
+ result.append(separator);
+ result.append((String) i.next());
+ }
+ return result.toString();
+ }
+
public void filterOut(Set blueList) {
// filter out words that appear in this set
Iterator it = queryWords.iterator();
diff --git a/source/de/anomic/plasma/plasmaSwitchboard.java b/source/de/anomic/plasma/plasmaSwitchboard.java
index 1b03d6780..ea9c6e503 100644
--- a/source/de/anomic/plasma/plasmaSwitchboard.java
+++ b/source/de/anomic/plasma/plasmaSwitchboard.java
@@ -1558,7 +1558,6 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
if (date == null) return ""; else return DateFormatter.format(date);
}
- //public serverObjects searchFromLocal(Set querywords, String order1, String order2, int count, boolean global, long time /*milliseconds*/, String urlmask) {
public serverObjects searchFromLocal(plasmaSearchQuery query) {
// tell all threads to do nothing for a specific time
@@ -1607,6 +1606,7 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
String host, hash, address, descr = "";
yacySeed seed;
plasmaSnippetCache.result snippet;
+ String formerSearch = query.words(" ");
long targetTime = timestamp + query.maximumTime;
if (targetTime < System.currentTimeMillis()) targetTime = System.currentTimeMillis() + 5000;
while ((acc.hasMoreElements()) && (i < query.wantedResults) && (System.currentTimeMillis() < targetTime)) {
@@ -1652,9 +1652,11 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser
if (snippet.source == plasmaSnippetCache.ERROR_NO_MATCH) {
// suppress line: there is no match in that resource
} else {
+ prop.put("results_" + i + "_delete", "/index.html?search=" + formerSearch + "&Enter=Search&count=" + query.wantedResults + "&order=" + query.orderString() + "&resource=local&time=3&deleteref=" + urlhash + "&urlmaskfilter=.*");
prop.put("results_" + i + "_description", descr);
prop.put("results_" + i + "_url", urlstring);
prop.put("results_" + i + "_urlhash", urlhash);
+ prop.put("results_" + i + "_urlhexhash", yacySeed.b64Hash2hexHash(urlhash));
prop.put("results_" + i + "_urlname", nxTools.cutUrlText(urlname, 120));
prop.put("results_" + i + "_date", dateString(urlentry.moddate()));
prop.put("results_" + i + "_ybr", plasmaSearchPreOrder.ybr(urlentry.hash()));
diff --git a/source/de/anomic/plasma/plasmaWordIndexEntry.java b/source/de/anomic/plasma/plasmaWordIndexEntry.java
index 3c73125f2..62b000610 100644
--- a/source/de/anomic/plasma/plasmaWordIndexEntry.java
+++ b/source/de/anomic/plasma/plasmaWordIndexEntry.java
@@ -189,7 +189,7 @@ public final class plasmaWordIndexEntry {
// ** hier fehlt noch als Attribut: , damit 'nearby' getrackt werden kann **
- if ((language == null) || (language.length() != plasmaCrawlLURL.urlLanguageLength)) language = "uk";
+ if ((language == null) || (language.length() != plasmaURL.urlLanguageLength)) language = "uk";
this.urlHash = urlHash;
this.count = count;
this.posintext = posintext;
diff --git a/source/de/anomic/server/serverDate.java b/source/de/anomic/server/serverDate.java
index b06e238ab..db2ccb70f 100644
--- a/source/de/anomic/server/serverDate.java
+++ b/source/de/anomic/server/serverDate.java
@@ -69,7 +69,7 @@ public final class serverDate {
//private final static String[] month = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
// find out time zone and DST offset
- private static Calendar thisCalendar = GregorianCalendar.getInstance();
+ private static Calendar thisCalendar = Calendar.getInstance();
//private static long zoneOffsetHours = thisCalendar.get(Calendar.ZONE_OFFSET);
//private static long DSTOffsetHours = thisCalendar.get(Calendar.DST_OFFSET);
//private static long offsetHours = zoneOffsetHours + DSTOffsetHours; // this must be subtracted from current Date().getTime() to produce a GMT Time