mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
- removed all extension types from extension navigation which are not
proper/known - automatically show the protocol navigation if there is more than http and https - automatically show the extension navigation if there is some media content
This commit is contained in:
parent
01200f06cc
commit
02020b590b
|
@ -28,6 +28,7 @@ import java.util.Iterator;
|
|||
import java.util.Map;
|
||||
|
||||
import net.yacy.cora.document.MultiProtocolURI;
|
||||
import net.yacy.cora.document.analysis.Classification;
|
||||
import net.yacy.cora.lod.vocabulary.Tagging;
|
||||
import net.yacy.cora.protocol.RequestHeader;
|
||||
import net.yacy.cora.sorting.ScoreMap;
|
||||
|
@ -222,10 +223,12 @@ public class yacysearchtrailer {
|
|||
navigatorIterator = theSearch.protocolNavigator.keys(false);
|
||||
int i = 0, p, pos = 0, neg = 0;
|
||||
String nav, queryStringForUrl;
|
||||
boolean visible = false;
|
||||
while (i < 20 && navigatorIterator.hasNext()) {
|
||||
name = navigatorIterator.next().trim();
|
||||
count = theSearch.protocolNavigator.get(name);
|
||||
if (count == 0) break;
|
||||
visible = visible || "ftp,smb".indexOf(name) >= 0;
|
||||
nav = "%2F" + name;
|
||||
queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true);
|
||||
p = queryStringForUrl.indexOf(nav);
|
||||
|
@ -247,7 +250,7 @@ public class yacysearchtrailer {
|
|||
i++;
|
||||
}
|
||||
prop.put("nav-protocols_element", i);
|
||||
prop.put("nav-protocols_activate", neg > 0 ? 1 : 0); // by default off
|
||||
prop.put("nav-protocols_activate", neg > 0 || visible ? 1 : 0); // by default off
|
||||
i--;
|
||||
prop.put("nav-protocols_element_" + i + "_nl", 0);
|
||||
if (pos == 1 && neg == 0) prop.put("nav-protocols", 0); // this navigation is not useful
|
||||
|
@ -261,10 +264,12 @@ public class yacysearchtrailer {
|
|||
navigatorIterator = theSearch.filetypeNavigator.keys(false);
|
||||
int i = 0, p, pos = 0, neg = 0;
|
||||
String nav, queryStringForUrl;
|
||||
boolean visible = false;
|
||||
while (i < 20 && navigatorIterator.hasNext()) {
|
||||
name = navigatorIterator.next().trim();
|
||||
count = theSearch.filetypeNavigator.get(name);
|
||||
if (count == 0) break;
|
||||
visible = visible || Classification.isMediaExtension(name) || "pdf,doc,docx".indexOf(name) >= 0;
|
||||
nav = "filetype%3A" + name;
|
||||
queryStringForUrl = theSearch.query.getQueryGoal().getOriginalQueryString(true);
|
||||
p = queryStringForUrl.indexOf(nav);
|
||||
|
@ -286,7 +291,7 @@ public class yacysearchtrailer {
|
|||
i++;
|
||||
}
|
||||
prop.put("nav-filetypes_element", i);
|
||||
prop.put("nav-filetypes_activate", neg > 0 ? 1 : 0); // by default off
|
||||
prop.put("nav-filetypes_activate", neg > 0 || visible ? 1 : 0); // by default off
|
||||
i--;
|
||||
prop.put("nav-filetypes_element_" + i + "_nl", 0);
|
||||
if (pos == 1 && neg == 0) prop.put("nav-filetypes", 0); // this navigation is not useful
|
||||
|
|
|
@ -138,11 +138,17 @@ public class Classification {
|
|||
return appsExtSet.contains(appsExt.trim().toLowerCase());
|
||||
}
|
||||
|
||||
private static boolean isControlExtension(final String ctrlExt) {
|
||||
public static boolean isControlExtension(final String ctrlExt) {
|
||||
if (ctrlExt == null) return false;
|
||||
return ctrlExtSet.contains(ctrlExt.trim().toLowerCase());
|
||||
}
|
||||
|
||||
public static boolean isAnyKnownExtension(String ext) {
|
||||
if (ext == null) return false;
|
||||
ext = ext.trim().toLowerCase();
|
||||
return textExtSet.contains(ext) || mediaExtSet.contains(ext) || ctrlExtSet.contains(ext);
|
||||
}
|
||||
|
||||
public static ContentDomain getContentDomain(final String ext) {
|
||||
if (isTextExtension(ext)) return ContentDomain.TEXT;
|
||||
if (isImageExtension(ext)) return ContentDomain.IMAGE;
|
||||
|
|
|
@ -447,7 +447,7 @@ public final class QueryParams {
|
|||
String ext = urlMaskPattern.substring(extm + 4);
|
||||
int k = ext.indexOf('(');
|
||||
if (k > 0) ext = ext.substring(0, k);
|
||||
fq.append(" AND ").append(YaCySchema.url_file_ext_s.getSolrFieldName()).append(':').append(ext);
|
||||
fq.append(" AND ").append(YaCySchema.url_file_ext_s.getSolrFieldName()).append(":\"").append(ext).append('\"');
|
||||
}
|
||||
|
||||
// translate protocol navigation
|
||||
|
@ -463,7 +463,7 @@ public final class QueryParams {
|
|||
while ((p = urlMaskPattern.indexOf(':')) >= 0) urlMaskPattern = urlMaskPattern.substring(0, p) + "." + urlMaskPattern.substring(p + 1);
|
||||
while ((p = urlMaskPattern.indexOf('/')) >= 0) urlMaskPattern = urlMaskPattern.substring(0, p) + "." + urlMaskPattern.substring(p + 1);
|
||||
while ((p = urlMaskPattern.indexOf('\\')) >= 0) urlMaskPattern = urlMaskPattern.substring(0, p) + "." + urlMaskPattern.substring(p + 2);
|
||||
fq.append(" AND ").append(YaCySchema.sku.getSolrFieldName() + ":/" + urlMaskPattern + "/");
|
||||
//fq.append(" AND ").append(YaCySchema.sku.getSolrFieldName() + ":/" + urlMaskPattern + "/");
|
||||
}
|
||||
|
||||
if (this.radius > 0.0d && this.lat != 0.0d && this.lon != 0.0d) {
|
||||
|
|
|
@ -60,6 +60,7 @@ import net.yacy.data.WorkTables;
|
|||
import net.yacy.document.Condenser;
|
||||
import net.yacy.document.LargeNumberCache;
|
||||
import net.yacy.document.LibraryProvider;
|
||||
import net.yacy.document.TextParser;
|
||||
import net.yacy.kelondro.data.meta.URIMetadataNode;
|
||||
import net.yacy.kelondro.data.word.Word;
|
||||
import net.yacy.kelondro.data.word.WordReference;
|
||||
|
@ -481,7 +482,15 @@ public final class SearchEvent {
|
|||
|
||||
if (this.filetypeNavigator != null) {
|
||||
fcts = facets.get(YaCySchema.url_file_ext_s.getSolrFieldName());
|
||||
if (fcts != null) this.filetypeNavigator.inc(fcts);
|
||||
if (fcts != null) {
|
||||
// remove all filetypes that we don't know
|
||||
Iterator<String> i = fcts.iterator();
|
||||
while (i.hasNext()) {
|
||||
String ext = i.next();
|
||||
if (TextParser.supportsExtension(ext) != null && !Classification.isAnyKnownExtension(ext)) i.remove();
|
||||
}
|
||||
this.filetypeNavigator.inc(fcts);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.authorNavigator != null) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user