/** * NameSpaceNavigator.java * (C) 2016 by reger24; https://github.com/reger24 * * This is a part of YaCy, a peer-to-peer based web search engine * * LICENSE * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. * If not, see <http://www.gnu.org/licenses/>. */ package net.yacy.search.navigator; import java.util.List; import net.yacy.kelondro.data.meta.URIMetadataNode; /** * Navigator for name space used in some wikies by using a : (colon) in the path * e.g. http://wikiurl/Help:About counted as name space = Help * (remark: the query uses the inurl: modifier (without the trailing : ) to filter results which matches http://host/Help.html too) */ public class NameSpaceNavigator extends StringNavigator implements Navigator { public NameSpaceNavigator(String title) { super(title, null); } @Override public String getQueryModifier(final String key) { return "inurl:" + key; } @Override public void incDocList(List<URIMetadataNode> docs) { // we need to override, as StringNavigator expects a field definition for (URIMetadataNode doc : docs) { incDoc(doc); } } @Override public void incDoc(URIMetadataNode doc) { int p; String pagepath = doc.url().getPath(); if ((p = pagepath.indexOf(':')) >= 0) { pagepath = pagepath.substring(0, p); p = pagepath.lastIndexOf('/'); if (p >= 0) { pagepath = pagepath.substring(p + 1); this.inc(pagepath); } } } }