*) followed some suggestions by PMD

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6970 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
low012 15 years ago
parent 2d263a7157
commit 0e6fed1fb6

@ -141,6 +141,8 @@
:: ::
#%env/templates/embeddedfooter.template%# #%env/templates/embeddedfooter.template%#
#(/display)# #(/display)#
<img src="cytag.png?icon=invisible&amp;nick=yacyh_#[clientid]#&amp;tag=search" /> <p>
<img src="cytag.png?icon=invisible&amp;nick=yacyh_#[clientid]#&amp;tag=search" alt=""/>
</p>
</body> </body>
</html> </html>

@ -11,16 +11,20 @@
<script type="text/javascript" src="/js/yacysearch.js"></script> <script type="text/javascript" src="/js/yacysearch.js"></script>
<script type="text/javascript" src="/js/highslide/highslide.js"></script> <script type="text/javascript" src="/js/highslide/highslide.js"></script>
<script type="text/javascript">hs.outlineType = 'rounded-white';</script> <script type="text/javascript">hs.outlineType = 'rounded-white';</script>
</head>
<body id="yacysearch">
#(display)# #(display)#
#%env/templates/simpleheader.template%#
<script src="/yacy/ui/js/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="/yacy/ui/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/yacy/ui/js/jquery-ui-1.7.2.min.js" type="text/javascript"></script> <script src="/yacy/ui/js/jquery-ui-1.7.2.min.js" type="text/javascript"></script>
<link media="screen" type="text/css" href="/yacy/ui/css/themes/start/ui.base.css" rel="stylesheet" /> <link media="screen" type="text/css" href="/yacy/ui/css/themes/start/ui.base.css" rel="stylesheet" />
<link media="screen" type="text/css" href="/yacy/ui/css/themes/start/ui.theme.css" rel="stylesheet" /> <link media="screen" type="text/css" href="/yacy/ui/css/themes/start/ui.theme.css" rel="stylesheet" />
:: ::
#(/display)#
</head>
<body id="yacysearch">
#(display)#
#%env/templates/simpleheader.template%#
::
<div id="api"> <div id="api">
<script type="text/javascript"> <script type="text/javascript">
//<![CDATA[ //<![CDATA[
@ -155,7 +159,7 @@ var progressbar = new Progressbar(#[results]#, document.getElementById("results"
#(/geoinfo)# #(/geoinfo)#
<!-- linklist begin --> <!-- linklist begin -->
#(resultTable)#::<table width="100%"><tr class="TableHeader"><td width="30%">Media</td><td width="70%">URL</tr>#(/resultTable)# #(resultTable)#::<table width="100%"><tr class="TableHeader"><td width="30%">Media</td><td width="70%">URL</td></tr>#(/resultTable)#
#{results}# #{results}#
<!--#include virtual="yacysearchitem.html?item=#[item]#&eventID=#[eventID]#&display=#[display]#" --> <!--#include virtual="yacysearchitem.html?item=#[item]#&eventID=#[eventID]#&display=#[display]#" -->
#{/results}# #{/results}#
@ -167,6 +171,6 @@ var progressbar = new Progressbar(#[results]#, document.getElementById("results"
<!-- div style="width=220px;" --> <!-- div style="width=220px;" -->
<!--#include virtual="yacysearchtrailer.html?eventID=#[eventID]#&display=#[display]#" --> <!--#include virtual="yacysearchtrailer.html?eventID=#[eventID]#&display=#[display]#" -->
<!-- /div --> <!-- /div -->
<!-- /div --> </div>
</body> </body>
</html> </html>

@ -102,6 +102,7 @@ public final class QueryParams {
final Bitfield constraint, final Bitfield constraint,
final Segment indexSegment, final Segment indexSegment,
final RankingProfile ranking) { final RankingProfile ranking) {
if ((queryString.length() == 12) && (Base64Order.enhancedCoder.wellformed(queryString.getBytes()))) { if ((queryString.length() == 12) && (Base64Order.enhancedCoder.wellformed(queryString.getBytes()))) {
this.queryString = null; this.queryString = null;
this.queryHashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); this.queryHashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0);
@ -164,6 +165,7 @@ public final class QueryParams {
final boolean specialRights, final boolean specialRights,
final Segment indexSegment, final Segment indexSegment,
final RankingProfile ranking) { final RankingProfile ranking) {
this.queryString = queryString; this.queryString = queryString;
this.queryHashes = queryHashes; this.queryHashes = queryHashes;
this.excludeHashes = excludeHashes; this.excludeHashes = excludeHashes;
@ -177,7 +179,7 @@ public final class QueryParams {
this.urlMask = Pattern.compile(urlMask); this.urlMask = Pattern.compile(urlMask);
this.urlMask_isCatchall = this.urlMask.toString().equals(catchall_pattern.toString()); this.urlMask_isCatchall = this.urlMask.toString().equals(catchall_pattern.toString());
this.prefer = Pattern.compile(prefer); this.prefer = Pattern.compile(prefer);
this.prefer_isMatchnothing = this.prefer.toString().equals(matchnothing_pattern.toString());; this.prefer_isMatchnothing = this.prefer.toString().equals(matchnothing_pattern.toString());
assert language != null; assert language != null;
this.targetlang = language; this.targetlang = language;
this.navigators = navigators; this.navigators = navigators;
@ -228,30 +230,32 @@ public final class QueryParams {
public static HandleSet hashes2Set(final String query) { public static HandleSet hashes2Set(final String query) {
final HandleSet keyhashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); final HandleSet keyhashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0);
if (query == null) return keyhashes; if (query != null) {
for (int i = 0; i < (query.length() / Word.commonHashLength); i++) try { for (int i = 0; i < (query.length() / Word.commonHashLength); i++) try {
keyhashes.put(query.substring(i * Word.commonHashLength, (i + 1) * Word.commonHashLength).getBytes()); keyhashes.put(query.substring(i * Word.commonHashLength, (i + 1) * Word.commonHashLength).getBytes());
} catch (RowSpaceExceededException e) { } catch (RowSpaceExceededException e) {
Log.logException(e); Log.logException(e);
} }
}
return keyhashes; return keyhashes;
} }
public static HandleSet hashes2Handles(final String query) { public static HandleSet hashes2Handles(final String query) {
final HandleSet keyhashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0); final HandleSet keyhashes = new HandleSet(WordReferenceRow.urlEntryRow.primaryKeyLength, WordReferenceRow.urlEntryRow.objectOrder, 0);
if (query == null) return keyhashes; if (query != null) {
for (int i = 0; i < (query.length() / Word.commonHashLength); i++) try { for (int i = 0; i < (query.length() / Word.commonHashLength); i++) try {
keyhashes.put(query.substring(i * Word.commonHashLength, (i + 1) * Word.commonHashLength).getBytes()); keyhashes.put(query.substring(i * Word.commonHashLength, (i + 1) * Word.commonHashLength).getBytes());
} catch (RowSpaceExceededException e) { } catch (RowSpaceExceededException e) {
Log.logException(e); Log.logException(e);
} }
}
return keyhashes; return keyhashes;
} }
public static String hashSet2hashString(final HandleSet hashes) { public static String hashSet2hashString(final HandleSet hashes) {
final byte[] bb = new byte[hashes.size() * Word.commonHashLength]; final byte[] bb = new byte[hashes.size() * Word.commonHashLength];
int p = 0; int p = 0;
for (byte[] b : hashes) { for (final byte[] b : hashes) {
assert b.length == Word.commonHashLength : "hash = " + new String(b); assert b.length == Word.commonHashLength : "hash = " + new String(b);
System.arraycopy(b, 0, bb, p, Word.commonHashLength); System.arraycopy(b, 0, bb, p, Word.commonHashLength);
p += Word.commonHashLength; p += Word.commonHashLength;
@ -284,9 +288,12 @@ public final class QueryParams {
* @return true if the query matches with the given text * @return true if the query matches with the given text
*/ */
public final boolean matchesText(final String text) { public final boolean matchesText(final String text) {
boolean ret = false;
final HandleSet wordhashes = Word.words2hashesHandles(Condenser.getWords(text).keySet()); final HandleSet wordhashes = Word.words2hashesHandles(Condenser.getWords(text).keySet());
if (SetTools.anymatch(wordhashes, this.excludeHashes)) return false; if (!SetTools.anymatch(wordhashes, this.excludeHashes)) {
return SetTools.totalInclusion(this.queryHashes, wordhashes); ret = SetTools.totalInclusion(this.queryHashes, wordhashes);
}
return ret;
} }
protected static final boolean anymatch(final String text, final HandleSet keyhashes) { protected static final boolean anymatch(final String text, final HandleSet keyhashes) {
@ -305,13 +312,15 @@ public final class QueryParams {
final TreeSet<String> exclude = new TreeSet<String>(NaturalOrder.naturalComparator); final TreeSet<String> exclude = new TreeSet<String>(NaturalOrder.naturalComparator);
final TreeSet<String> fullquery = new TreeSet<String>(NaturalOrder.naturalComparator); final TreeSet<String> fullquery = new TreeSet<String>(NaturalOrder.naturalComparator);
if ((querystring == null) || (querystring.length() == 0)) return new TreeSet[]{query, exclude, fullquery}; if ((querystring != null) && (querystring.length() > 0)) {
// convert Umlaute // convert Umlaute
querystring = AbstractScraper.stripAll(querystring).toLowerCase().trim(); querystring = AbstractScraper.stripAll(querystring).toLowerCase().trim();
int c; int c;
for (int i = 0; i < seps.length(); i++) { 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 = querystring.indexOf(seps.charAt(i))) >= 0) {
querystring = querystring.substring(0, c) + (((c + 1) < querystring.length()) ? (" " + querystring.substring(c + 1)) : "");
}
} }
String s; String s;
@ -325,23 +334,27 @@ public final class QueryParams {
while ((c = a[i].indexOf('-')) >= 0) { while ((c = a[i].indexOf('-')) >= 0) {
s = a[i].substring(0, c); s = a[i].substring(0, c);
l = s.length(); l = s.length();
if (l >= Condenser.wordminsize) query.add(s); if (l >= Condenser.wordminsize) {query.add(s);}
if (l > 0) fullquery.add(s); if (l > 0) {fullquery.add(s);}
a[i] = a[i].substring(c + 1); a[i] = a[i].substring(c + 1);
} }
l = a[i].length(); l = a[i].length();
if (l >= Condenser.wordminsize) query.add(a[i]); if (l >= Condenser.wordminsize) {query.add(a[i]);}
if (l > 0) fullquery.add(a[i]); if (l > 0) {fullquery.add(a[i]);}
}
} }
} }
return new TreeSet[]{query, exclude, fullquery}; return new TreeSet[]{query, exclude, fullquery};
} }
public String queryString(final boolean encodeHTML) { public String queryString(final boolean encodeHTML) {
final String ret;
if (encodeHTML){ if (encodeHTML){
return CharacterCoding.unicode2html(this.queryString, true); ret =CharacterCoding.unicode2html(this.queryString, true);
} else {
ret = this.queryString;
} }
return this.queryString; return ret;
} }
public TreeSet<String>[] queryWords() { public TreeSet<String>[] queryWords() {
@ -356,9 +369,9 @@ public final class QueryParams {
} }
public final Map<MultiProtocolURI, String> separateMatches(Map<MultiProtocolURI, String> links) { public final Map<MultiProtocolURI, String> separateMatches(final Map<MultiProtocolURI, String> links) {
Map<MultiProtocolURI, String> matcher = new HashMap<MultiProtocolURI, String>(); final Map<MultiProtocolURI, String> matcher = new HashMap<MultiProtocolURI, String>();
Iterator <Map.Entry<MultiProtocolURI, String>> i = links.entrySet().iterator(); final Iterator <Map.Entry<MultiProtocolURI, String>> i = links.entrySet().iterator();
Map.Entry<MultiProtocolURI, String> entry; Map.Entry<MultiProtocolURI, String> entry;
MultiProtocolURI url; MultiProtocolURI url;
String anchorText; String anchorText;
@ -375,23 +388,40 @@ public final class QueryParams {
} }
public String id(final boolean anonymized) { public String id(final boolean anonymized) {
final String asterisk = "*";
// generate a string that identifies a search so results can be re-used in a cache // generate a string that identifies a search so results can be re-used in a cache
String context = final StringBuilder context = new StringBuilder();
"*" + this.domType + context.append(asterisk);
"*" + this.contentdom + context.append(this.domType);
"*" + this.zonecode + context.append(asterisk);
"*" + new String(Word.word2hash(this.ranking.toExternalString())) + context.append(this.contentdom);
"*" + this.prefer + context.append(asterisk);
"*" + this.urlMask + context.append(this.zonecode);
"*" + this.sitehash + context.append(asterisk);
"*" + this.authorhash + context.append(Word.word2hash(this.ranking.toExternalString()));
"*" + this.targetlang + context.append(asterisk);
"*" + this.constraint + context.append(this.prefer);
"*" + this.maxDistance; context.append(asterisk);
if (anonymized) context.append(this.urlMask);
return anonymizedQueryHashes(this.queryHashes) + "-" + anonymizedQueryHashes(this.excludeHashes) + context; context.append(asterisk);
else context.append(this.sitehash);
return hashSet2hashString(this.queryHashes) + "-" + hashSet2hashString(this.excludeHashes) + context; context.append(asterisk);
context.append(this.authorhash);
context.append(asterisk);
context.append(this.targetlang);
context.append(asterisk);
context.append(this.constraint);
context.append(asterisk);
context.append(this.maxDistance);
final String ret;
if (anonymized) {
ret = anonymizedQueryHashes(this.queryHashes) + "-" + anonymizedQueryHashes(this.excludeHashes) + context;
} else {
ret = hashSet2hashString(this.queryHashes) + "-" + hashSet2hashString(this.excludeHashes) + context;
}
return ret;
} }
/** /**
@ -403,19 +433,64 @@ public final class QueryParams {
* @param addToQuery * @param addToQuery
* @return * @return
*/ */
public static String navurl(String ext, final int page, final int display, final QueryParams theQuery, final String originalUrlMask, String addToQuery, String nav) { public static String navurl(final String ext, final int page, final int display, final QueryParams theQuery, final String originalUrlMask, final String addToQuery, final String nav) {
return
"/yacysearch." + ext + "?display=" + display + final String ampersand = "&amp;";
"&query=" + theQuery.queryString(true).replace(' ', '+') + ((addToQuery == null) ? "" : "+" + addToQuery) +
"&maximumRecords="+ theQuery.displayResults() + final StringBuilder sb = new StringBuilder();
"&startRecord=" + (page * theQuery.displayResults()) + sb.append("/yacysearch.");
"&resource=" + ((theQuery.isLocal()) ? "local" : "global") + sb.append(ext);
"&verify=" + (theQuery.snippetCacheStrategy.mustBeOffline() ? "false" : "true") + sb.append("?display=");
"&nav=" + nav + sb.append(display);
"&urlmaskfilter=" + originalUrlMask +
"&prefermaskfilter=" + theQuery.prefer + sb.append(ampersand);
"&cat=href&amp;constraint=" + ((theQuery.constraint == null) ? "" : theQuery.constraint.exportB64()) + sb.append("query=");
"&contentdom=" + theQuery.contentdom() + sb.append(theQuery.queryString(true).replace(' ', '+'));
"&former=" + theQuery.queryString(true); sb.append((addToQuery == null) ? "" : "+" + addToQuery);
sb.append(ampersand);
sb.append("maximumRecords=");
sb.append(theQuery.displayResults());
sb.append(ampersand);
sb.append("startRecord=");
sb.append(page * theQuery.displayResults());
sb.append(ampersand);
sb.append("resource=");
sb.append((theQuery.isLocal()) ? "local" : "global");
sb.append(ampersand);
sb.append("verify=");
sb.append(theQuery.snippetCacheStrategy.mustBeOffline() ? "false" : "true");
sb.append(ampersand);
sb.append("nav=");
sb.append(nav);
sb.append(ampersand);
sb.append("urlmaskfilter=");
sb.append(originalUrlMask);
sb.append(ampersand);
sb.append("prefermaskfilter=");
sb.append(theQuery.prefer);
sb.append(ampersand);
sb.append("cat=href");
sb.append(ampersand);
sb.append("constraint=");
sb.append((theQuery.constraint == null) ? "" : theQuery.constraint.exportB64());
sb.append(ampersand);
sb.append("contentdom=");
sb.append(theQuery.contentdom());
sb.append(ampersand);
sb.append("former=");
sb.append(theQuery.queryString(true));
return sb.toString();
} }
} }

Loading…
Cancel
Save