From c72c43551782a43e91c1cd9331d41b7bb166f64f Mon Sep 17 00:00:00 2001 From: Michael Peter Christen Date: Fri, 31 Aug 2012 14:00:53 +0200 Subject: [PATCH] - moved the gsa search interface from /gsa/searchresult? to /gsa/search? - fixed the NB field data --- htroot/gsa/searchresult.java | 2 +- .../anomic/http/server/HTTPDFileHandler.java | 4 +++ .../federated/solr/GSAResponseWriter.java | 28 +++++++++++++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/htroot/gsa/searchresult.java b/htroot/gsa/searchresult.java index af46fbd37..b7bb0f580 100644 --- a/htroot/gsa/searchresult.java +++ b/htroot/gsa/searchresult.java @@ -139,7 +139,7 @@ public class searchresult { // set some context for the writer Map context = req.getContext(); context.put("ip", header.get("CLIENTIP", "")); - context.put("client", header.get("User-Agent", "")); + context.put("client", "vsm_frontent"); context.put("sort", sort.sort); context.put("site", site == null ? "" : site); context.put("access", access == null ? "p" : access); diff --git a/source/de/anomic/http/server/HTTPDFileHandler.java b/source/de/anomic/http/server/HTTPDFileHandler.java index 642759775..62d330317 100644 --- a/source/de/anomic/http/server/HTTPDFileHandler.java +++ b/source/de/anomic/http/server/HTTPDFileHandler.java @@ -302,6 +302,10 @@ public final class HTTPDFileHandler { if (path.startsWith("/bookmarks/")) { path = "/api/bookmarks/" + path.substring(11); } + // another patch for the gsa interface + if (path.startsWith("/gsa/search")) { + path = "/gsa/searchresult" + path.substring(11); + } // these are the 5 cases where an access granted: // (the alternative is that we deliver a 401 to request authorization) diff --git a/source/net/yacy/cora/services/federated/solr/GSAResponseWriter.java b/source/net/yacy/cora/services/federated/solr/GSAResponseWriter.java index 2c0aa5d37..0f2b30a99 100644 --- a/source/net/yacy/cora/services/federated/solr/GSAResponseWriter.java +++ b/source/net/yacy/cora/services/federated/solr/GSAResponseWriter.java @@ -180,13 +180,29 @@ public class GSAResponseWriter implements QueryResponseWriter { // body introduction final int responseCount = response.size(); writer.write(""); writer.write(lb); // The index (1-based) of the first and last search result returned in this result set. - writer.write("" + response.matches() + ""); writer.write(lb); // The estimated total number of results for the search. + writer.write("" + resHead.numFound + ""); writer.write(lb); // The estimated total number of results for the search. writer.write(""); writer.write(lb); // Indicates that document filtering was performed during this search. - writer.write(""); - XML.escapeCharData("/search?q=" + request.getParams().get("q") + "&site=" + (String) context.get("site") + - "&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=" + (String) context.get("client") + "&access=" + (String) context.get("access") + - "&sort=" + (String) context.get("sort") + "&start=" + resHead.offset + responseCount + "&sa=N", writer); // a relative URL pointing to the NEXT results page. - writer.write(""); + int nextStart = resHead.offset + responseCount; + int nextNum = Math.min(resHead.numFound - nextStart, responseCount < resHead.rows ? 0 : resHead.rows); + int prevStart = resHead.offset - resHead.rows; + if (prevStart >= 0 || nextNum > 0) { + writer.write(""); + if (prevStart >= 0) { + writer.write(""); + XML.escapeCharData("/gsa/search?q=" + request.getParams().get("q") + "&site=" + (String) context.get("site") + + "&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=" + (String) context.get("client") + "&access=" + (String) context.get("access") + + "&sort=" + (String) context.get("sort") + "&start=" + prevStart + "&sa=N", writer); // a relative URL pointing to the NEXT results page. + writer.write(""); + } + if (nextNum > 0) { + writer.write(""); + XML.escapeCharData("/gsa/search?q=" + request.getParams().get("q") + "&site=" + (String) context.get("site") + + "&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=" + (String) context.get("client") + "&access=" + (String) context.get("access") + + "&sort=" + (String) context.get("sort") + "&start=" + nextStart + "&num=" + nextNum + "&sa=N", writer); // a relative URL pointing to the NEXT results page. + writer.write(""); + } + writer.write(""); + } writer.write(lb); // parse body