diff --git a/htroot/AccessTracker_p.java b/htroot/AccessTracker_p.java index eaf98ef12..103fc7ee1 100644 --- a/htroot/AccessTracker_p.java +++ b/htroot/AccessTracker_p.java @@ -165,7 +165,7 @@ public class AccessTracker_p { if (page == 2) { // local search prop.putNum("page_list_" + m + "_offset", query.offset); - prop.putHTML("page_list_" + m + "_querystring", query.getQueryGoal().getQueryString()); + prop.putHTML("page_list_" + m + "_querystring", query.getQueryGoal().getOriginalQueryString(false)); } else { // remote search prop.putHTML("page_list_" + m + "_peername", (query.remotepeer == null) ? "" : query.remotepeer.getName()); diff --git a/htroot/IndexControlRWIs_p.java b/htroot/IndexControlRWIs_p.java index 2140091c1..2f28e0663 100644 --- a/htroot/IndexControlRWIs_p.java +++ b/htroot/IndexControlRWIs_p.java @@ -649,7 +649,8 @@ public class IndexControlRWIs_p { final byte[] keyhash, final Bitfield filter) { - final QueryParams query = new QueryParams(ASCII.String(keyhash), -1, filter, segment, sb.getRanking(), "IndexControlRWIs_p"); + String khw = ASCII.String(keyhash); + final QueryParams query = new QueryParams(khw, khw, -1, filter, segment, sb.getRanking(), "IndexControlRWIs_p"); final SearchEvent theSearch = SearchEventCache.getEvent(query, sb.peers, sb.tables, null, false, sb.loader, Integer.MAX_VALUE, Long.MAX_VALUE, (int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_ROBINSON, 0), (int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_MULTIWORD, 0)); //theSearch.rankingProcess.run(); RankingProcess ranked = theSearch.rankingProcess; diff --git a/htroot/api/timeline.java b/htroot/api/timeline.java index 4f61b7b44..0bc759df5 100644 --- a/htroot/api/timeline.java +++ b/htroot/api/timeline.java @@ -67,7 +67,7 @@ public final class timeline { language = (agent == null) ? "en" : ISO639.userAgentLanguageDetection(agent); if (language == null) language = "en"; } - final QueryGoal qg = new QueryGoal(querystring); + final QueryGoal qg = new QueryGoal(querystring, querystring); HandleSet q = qg.getIncludeHashes(); // tell all threads to do nothing for a specific time diff --git a/htroot/gsa/searchresult.java b/htroot/gsa/searchresult.java index f30f941c2..14a3f9278 100644 --- a/htroot/gsa/searchresult.java +++ b/htroot/gsa/searchresult.java @@ -113,7 +113,7 @@ public class searchresult { post.put("originalQuery", originalQuery); // get a solr query string - QueryGoal qg = new QueryGoal(originalQuery); + QueryGoal qg = new QueryGoal(originalQuery, originalQuery); StringBuilder solrQ = qg.solrQueryString(sb.index.fulltext().getSolrScheme()); post.put("defType", "edismax"); post.put(CommonParams.Q, solrQ.toString()); diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java index fa95392b2..972d2f884 100644 --- a/htroot/yacysearch.java +++ b/htroot/yacysearch.java @@ -356,8 +356,9 @@ public class yacysearch { final RankingProfile ranking = sb.getRanking(); final StringBuilder modifier = new StringBuilder(20); - if ("*".equals(querystring)) { - querystring = Segment.catchallString; + int stp = querystring.indexOf('*'); + if (stp >= 0) { + querystring = querystring.substring(0, stp) + Segment.catchallString + querystring.substring(stp + 1); } if ( querystring.indexOf("/near", 0) >= 0 ) { querystring = querystring.replace("/near", ""); @@ -597,7 +598,7 @@ public class yacysearch { } // the query - final QueryGoal qg = new QueryGoal(querystring.trim()); + final QueryGoal qg = new QueryGoal(originalquerystring, querystring.trim()); final int maxDistance = (querystring.indexOf('"', 0) >= 0) ? qg.getAllHashes().size() - 1 : Integer.MAX_VALUE; // filter out stopwords @@ -766,7 +767,7 @@ public class yacysearch { Log.logInfo( "LOCAL_SEARCH", "INIT WORD SEARCH: " - + theQuery.getQueryGoal().getQueryString() + + theQuery.getQueryGoal().getOriginalQueryString(false) + ":" + QueryParams.hashSet2hashString(theQuery.getQueryGoal().getIncludeHashes()) + " - " @@ -775,7 +776,7 @@ public class yacysearch { + theQuery.itemsPerPage() + " lines to be displayed"); EventChannel.channels(EventChannel.LOCALSEARCH).addMessage( - new RSSMessage("Local Search Request", theQuery.getQueryGoal().getQueryString(), "")); + new RSSMessage("Local Search Request", theQuery.getQueryGoal().getOriginalQueryString(false), "")); final long timestamp = System.currentTimeMillis(); // create a new search event @@ -814,7 +815,7 @@ public class yacysearch { // log Log.logInfo("LOCAL_SEARCH", "EXIT WORD SEARCH: " - + theQuery.getQueryGoal().getQueryString() + + theQuery.getQueryGoal().getOriginalQueryString(false) + " - " + "local_rwi_available(" + theSearch.query.local_rwi_available.get() + "), " + "local_rwi_stored(" + theSearch.query.local_rwi_stored.get() + "), " diff --git a/htroot/yacysearchitem.java b/htroot/yacysearchitem.java index 69729b5f6..9d8469f4b 100644 --- a/htroot/yacysearchitem.java +++ b/htroot/yacysearchitem.java @@ -122,6 +122,7 @@ public class yacysearchitem { faviconURL = null; } final String resource = theSearch.query.domType.toString(); + final String origQ = theSearch.query.getQueryGoal().getOriginalQueryString(true); prop.put("content", 1); // switch on specific content prop.put("content_showDate", sb.getConfigBool("search.result.show.date", true) ? 1 : 0); prop.put("content_showSize", sb.getConfigBool("search.result.show.size", true) ? 1 : 0); @@ -134,10 +135,10 @@ public class yacysearchitem { prop.put("content_authorized", authenticated ? "1" : "0"); final String urlhash = ASCII.String(result.hash()); prop.put("content_authorized_bookmark", sb.tables.bookmarks.hasBookmark("admin", urlhash) ? "0" : "1"); - prop.putHTML("content_authorized_bookmark_bookmarklink", "/yacysearch.html?query=" + theSearch.query.getQueryGoal().getQueryString().replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&bookmarkref=" + urlhash + "&urlmaskfilter=.*"); + prop.putHTML("content_authorized_bookmark_bookmarklink", "/yacysearch.html?query=" + origQ.replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&bookmarkref=" + urlhash + "&urlmaskfilter=.*"); prop.put("content_authorized_recommend", (sb.peers.newsPool.getSpecific(NewsPool.OUTGOING_DB, NewsPool.CATEGORY_SURFTIPP_ADD, "url", resultUrlstring) == null) ? "1" : "0"); - prop.putHTML("content_authorized_recommend_deletelink", "/yacysearch.html?query=" + theSearch.query.getQueryGoal().getQueryString().replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&deleteref=" + urlhash + "&urlmaskfilter=.*"); - prop.putHTML("content_authorized_recommend_recommendlink", "/yacysearch.html?query=" + theSearch.query.getQueryGoal().getQueryString().replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&recommendref=" + urlhash + "&urlmaskfilter=.*"); + prop.putHTML("content_authorized_recommend_deletelink", "/yacysearch.html?query=" + origQ.replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&deleteref=" + urlhash + "&urlmaskfilter=.*"); + prop.putHTML("content_authorized_recommend_recommendlink", "/yacysearch.html?query=" + origQ.replace(' ', '+') + "&Enter=Search&count=" + theSearch.query.itemsPerPage() + "&offset=" + (theSearch.query.neededResults() - theSearch.query.itemsPerPage()) + "&order=" + crypt.simpleEncode(theSearch.query.ranking.toExternalString()) + "&resource=" + resource + "&time=3&recommendref=" + urlhash + "&urlmaskfilter=.*"); prop.put("content_authorized_urlhash", urlhash); final String resulthashString = urlhash; prop.putHTML("content_title", result.title()); @@ -214,8 +215,8 @@ public class yacysearchitem { final String words = (s.length() > 0) ? s.substring(1) : ""; prop.putHTML("content_words", words); prop.putHTML("content_showParser_words", words); - prop.putHTML("content_former", theSearch.query.getQueryGoal().getQueryString()); - prop.putHTML("content_showPictures_former", theSearch.query.getQueryGoal().getQueryString()); + prop.putHTML("content_former", origQ); + prop.putHTML("content_showPictures_former", origQ); final TextSnippet snippet = result.textSnippet(); final String desc = (snippet == null) ? "" : snippet.isMarked() ? snippet.getLineRaw() : snippet.getLineMarked(theSearch.query.getQueryGoal()); prop.put("content_description", desc); diff --git a/htroot/yacysearchtrailer.java b/htroot/yacysearchtrailer.java index 0f5f993e0..4efca40aa 100644 --- a/htroot/yacysearchtrailer.java +++ b/htroot/yacysearchtrailer.java @@ -79,7 +79,7 @@ public class yacysearchtrailer { count = theSearch.namespaceNavigator.get(name); if (count == 0) break; nav = "inurl%3A" + name; - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { pos++; @@ -119,7 +119,7 @@ public class yacysearchtrailer { count = hostNavigator.get(name); if (count == 0) break; nav = "site%3A" + name; - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { pos++; @@ -158,7 +158,7 @@ public class yacysearchtrailer { count = theSearch.authorNavigator.get(name); if (count == 0) break; nav = (name.indexOf(' ', 0) < 0) ? "author%3A" + name : "author%3A%28" + name.replace(" ", "+") + "%29"; - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { pos++; @@ -197,9 +197,9 @@ public class yacysearchtrailer { name = navigatorIterator.next(); count = topicNavigator.get(name); if (count == 0) break; - if (theSearch.query.getQueryGoal().getQueryString() == null) break; + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); + if (queryStringForUrl == null) break; if (name != null) { - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); prop.put("nav-topics_element_" + i + "_on", 1); prop.put(fileType, "nav-topics_element_" + i + "_modifier", name); prop.put(fileType, "nav-topics_element_" + i + "_name", name); @@ -227,7 +227,7 @@ public class yacysearchtrailer { count = theSearch.protocolNavigator.get(name); if (count == 0) break; nav = "%2F" + name; - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { pos++; @@ -266,7 +266,7 @@ public class yacysearchtrailer { count = theSearch.filetypeNavigator.get(name); if (count == 0) break; nav = "filetype%3A" + name; - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { pos++; @@ -310,7 +310,7 @@ public class yacysearchtrailer { count = ve.getValue().get(name); if (count == 0) break; nav = "%2Fvocabulary%2F" + navname + "%2F" + MultiProtocolURI.escape(Tagging.encodePrintname(name)).toString(); - queryStringForUrl = theSearch.query.getQueryGoal().queryStringForUrl(); + queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true); p = queryStringForUrl.indexOf(nav); if (p < 0) { queryStringForUrl += "+" + nav; @@ -354,8 +354,9 @@ public class yacysearchtrailer { prop.put("cat-location", 0); } else { prop.put("cat-location", 1); - prop.put(fileType, "cat-location_query", theSearch.query.queryString(true)); - prop.put(fileType, "cat-location_queryenc", theSearch.query.queryString(true).replace(' ', '+')); + String uriginalQuery = theSearch.query.getQueryGoal().getOriginalQueryString(true); + prop.put(fileType, "cat-location_query", uriginalQuery); + prop.put(fileType, "cat-location_queryenc", uriginalQuery.replace(' ', '+')); } prop.put("num-results_totalcount", theSearch.query.getResultCount()); EventTracker.update(EventTracker.EClass.SEARCH, new ProfilingGraph.EventSearch(theSearch.query.id(true), SearchEventType.FINALIZATION, "bottomline", 0, 0), false); diff --git a/source/net/yacy/peers/Protocol.java b/source/net/yacy/peers/Protocol.java index c6f33d4a5..4fe442a91 100644 --- a/source/net/yacy/peers/Protocol.java +++ b/source/net/yacy/peers/Protocol.java @@ -1034,7 +1034,7 @@ public final class Protocol final Seed target, final Blacklist blacklist) { - if (event.query.getQueryGoal().getQueryString() == null || event.query.getQueryGoal().getQueryString().length() == 0) { + if (event.query.getQueryGoal().getOriginalQueryString(false) == null || event.query.getQueryGoal().getOriginalQueryString(false).length() == 0) { return -1; // we cannot query solr only with word hashes, there is no clear text string } event.addExpectedRemoteReferences(count); diff --git a/source/net/yacy/search/Switchboard.java b/source/net/yacy/search/Switchboard.java index fdad872c3..d9e0b94ca 100644 --- a/source/net/yacy/search/Switchboard.java +++ b/source/net/yacy/search/Switchboard.java @@ -3321,7 +3321,7 @@ public final class Switchboard extends serverSwitch { new Thread() { @Override public void run() { - String queryString = searchEvent.query.queryString(true); + String queryString = searchEvent.query.getQueryGoal().getOriginalQueryString(false); Thread.currentThread().setName("Switchboard.heuristicRSS:" + queryString); final int meta = queryString.indexOf("heuristic:", 0); if ( meta >= 0 ) { diff --git a/source/net/yacy/search/query/AccessTracker.java b/source/net/yacy/search/query/AccessTracker.java index 6f84a98df..edd13e8e6 100644 --- a/source/net/yacy/search/query/AccessTracker.java +++ b/source/net/yacy/search/query/AccessTracker.java @@ -67,9 +67,10 @@ public class AccessTracker { private static void add(final LinkedList list, final QueryParams query) { // learn that this word can be a word completion for the DidYouMeanLibrary - if (query.getResultCount() > 10 && query.getQueryGoal().getQueryString() != null && query.getQueryGoal().getQueryString().length() > 0) { - final StringBuilder sb = new StringBuilder(query.getQueryGoal().getQueryString()); - sb.append(query.getQueryGoal().getQueryString()); + String queryString = query.getQueryGoal().getOriginalQueryString(false); + if (query.getResultCount() > 10 && queryString != null && queryString.length() > 0) { + final StringBuilder sb = new StringBuilder(queryString); + sb.append(queryString); WordCache.learn(sb); } @@ -108,8 +109,9 @@ public class AccessTracker { } private static void addToDump(final QueryParams query) { - if (query.getQueryGoal().getQueryString() == null || query.getQueryGoal().getQueryString().isEmpty()) return; - addToDump(query.getQueryGoal().getQueryString(), Integer.toString(query.getResultCount()), new Date(query.starttime)); + String queryString = query.getQueryGoal().getOriginalQueryString(false); + if (queryString == null || queryString.isEmpty()) return; + addToDump(queryString, Integer.toString(query.getResultCount()), new Date(query.starttime)); } public static void addToDump(String querystring, String resultcount) { diff --git a/source/net/yacy/search/query/QueryGoal.java b/source/net/yacy/search/query/QueryGoal.java index 7c1822296..74e3a9ab6 100644 --- a/source/net/yacy/search/query/QueryGoal.java +++ b/source/net/yacy/search/query/QueryGoal.java @@ -28,15 +28,10 @@ import java.util.SortedSet; import net.yacy.cora.federate.solr.Boost; import net.yacy.cora.federate.solr.YaCySchema; -import net.yacy.cora.order.Base64Order; import net.yacy.cora.storage.HandleSet; -import net.yacy.cora.util.SpaceExceededException; import net.yacy.document.parser.html.AbstractScraper; import net.yacy.document.parser.html.CharacterCoding; import net.yacy.kelondro.data.word.Word; -import net.yacy.kelondro.data.word.WordReferenceRow; -import net.yacy.kelondro.index.RowHandleSet; -import net.yacy.kelondro.logging.Log; import net.yacy.search.index.Segment; import net.yacy.search.index.SolrConfiguration; @@ -48,14 +43,15 @@ public class QueryGoal { private static char dq = '"'; private static String seps = ".,/&_"; - private String querystring; + private String query_original, query_words; private HandleSet include_hashes, exclude_hashes, all_hashes; private final ArrayList include_words, exclude_words, all_words; private final ArrayList include_strings, exclude_strings, all_strings; public QueryGoal(HandleSet include_hashes, HandleSet exclude_hashes, HandleSet all_hashes) { - this.querystring = null; + this.query_original = null; + this.query_words = null; this.include_words = null; this.exclude_words = null; this.all_words = null; @@ -66,35 +62,12 @@ public class QueryGoal { this.exclude_hashes = exclude_hashes; this.all_hashes = all_hashes; } - - public QueryGoal(byte[] queryHash) { - assert querystring != null; - assert queryHash.length == 12; - assert Base64Order.enhancedCoder.wellformed(queryHash); - this.querystring = null; - this.include_words = new ArrayList(); - this.exclude_words = new ArrayList(); - this.all_words = new ArrayList(); - this.include_strings = new ArrayList(); - this.exclude_strings = new ArrayList(); - this.all_strings = new ArrayList(); - this.include_hashes = new RowHandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); - this.exclude_hashes = new RowHandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); - this.all_hashes = new RowHandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); - try { - this.include_hashes.put(queryHash); - this.all_hashes.put(queryHash); - } catch (final SpaceExceededException e) { - Log.logException(e); - } - this.include_hashes = null; - this.exclude_hashes = null; - this.all_hashes = null; - } - public QueryGoal(String querystring) { - assert querystring != null; - this.querystring = querystring; + public QueryGoal(String query_original, String query_words) { + assert query_original != null; + assert query_words != null; + this.query_original = query_original; + this.query_words = query_words; this.include_words = new ArrayList(); this.exclude_words = new ArrayList(); this.all_words = new ArrayList(); @@ -103,16 +76,16 @@ public class QueryGoal { this.all_strings = new ArrayList(); // remove funny symbols - querystring = CharacterCoding.html2unicode(AbstractScraper.stripAllTags(querystring.toCharArray())).toLowerCase().trim(); + this.query_words = CharacterCoding.html2unicode(AbstractScraper.stripAllTags(this.query_words.toCharArray())).toLowerCase().trim(); int c; for (int i = 0; i < seps.length(); i++) { - while ((c = querystring.indexOf(seps.charAt(i))) >= 0) { - querystring = querystring.substring(0, c) + (((c + 1) < querystring.length()) ? (' ' + querystring.substring(c + 1)) : ""); + while ((c = this.query_words.indexOf(seps.charAt(i))) >= 0) { + this.query_words = this.query_words.substring(0, c) + (((c + 1) < this.query_words.length()) ? (' ' + this.query_words.substring(c + 1)) : ""); } } // parse first quoted strings - parseQuery(querystring, this.include_strings, this.exclude_strings, this.all_strings); + parseQuery(this.query_words, this.include_strings, this.exclude_strings, this.all_strings); // .. end then take these strings apart to generate word lists for (String s: this.include_strings) parseQuery(s, this.include_words, this.include_words, this.all_words); @@ -168,17 +141,31 @@ public class QueryGoal { } } - public String getQueryString() { - return this.querystring; + public String getOriginalQueryString(final boolean encodeHTML) { + String ret; + if (encodeHTML){ + try { + ret = URLEncoder.encode(this.query_original, "UTF-8"); + } catch (UnsupportedEncodingException e) { + ret = this.query_original; + } + } else { + ret = this.query_original; + } + return ret; } - - public String queryStringForUrl() { - try { - return URLEncoder.encode(this.querystring, "UTF-8"); - } catch (final UnsupportedEncodingException e) { - Log.logException(e); - return this.querystring; + public String getWordQueryString(final boolean encodeHTML) { + String ret; + if (encodeHTML){ + try { + ret = URLEncoder.encode(this.query_words, "UTF-8"); + } catch (UnsupportedEncodingException e) { + ret = this.query_words; + } + } else { + ret = this.query_words; } + return ret; } public HandleSet getIncludeHashes() { diff --git a/source/net/yacy/search/query/QueryParams.java b/source/net/yacy/search/query/QueryParams.java index 279b7b4e2..7cfcc729a 100644 --- a/source/net/yacy/search/query/QueryParams.java +++ b/source/net/yacy/search/query/QueryParams.java @@ -153,13 +153,13 @@ public final class QueryParams { public final SortedSet misses; // url hashes that had been sorted out because of constraints in postranking public QueryParams( - final String queryString, + final String query_original, final String query_words, final int itemsPerPage, final Bitfield constraint, final Segment indexSegment, final RankingProfile ranking, final String userAgent) { - this.queryGoal = new QueryGoal(queryString); + this.queryGoal = new QueryGoal(query_original, query_words); this.ranking = ranking; this.modifier = new Modifier(""); this.maxDistance = Integer.MAX_VALUE; @@ -398,17 +398,6 @@ public final class QueryParams { return SetTools.anymatch(wordhashes, keyhashes); } - public String queryString(final boolean encodeHTML) { - final String ret; - if (encodeHTML){ - ret = CharacterCoding.unicode2html(this.queryGoal.getQueryString(), true); - } else { - ret = this.queryGoal.getQueryString(); - } - return ret; - } - - public SolrQuery solrQuery() { if (this.queryGoal.getIncludeStrings().size() == 0) return null; // get text query @@ -588,7 +577,7 @@ public final class QueryParams { sb.append("/yacysearch."); sb.append(ext); sb.append("?query="); - sb.append(newQueryString == null ? theQuery.getQueryGoal().queryStringForUrl() : newQueryString); + sb.append(newQueryString == null ? theQuery.getQueryGoal().getOriginalQueryString(true) : newQueryString); sb.append(ampersand); sb.append("maximumRecords="); @@ -619,7 +608,7 @@ public final class QueryParams { sb.append(ampersand); sb.append("former="); - sb.append(theQuery.getQueryGoal().queryStringForUrl()); + sb.append(theQuery.getQueryGoal().getOriginalQueryString(true)); return sb; } diff --git a/source/net/yacy/search/query/RankingProcess.java b/source/net/yacy/search/query/RankingProcess.java index 19b492b9f..e786a635e 100644 --- a/source/net/yacy/search/query/RankingProcess.java +++ b/source/net/yacy/search/query/RankingProcess.java @@ -235,7 +235,7 @@ public final class RankingProcess extends Thread { new ProfilingGraph.EventSearch( this.query.id(true), SearchEventType.JOIN, - this.query.getQueryGoal().getQueryString(), + this.query.getQueryGoal().getOriginalQueryString(false), index.size(), System.currentTimeMillis() - timer), false);