mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
refactoring: moved search query class to new search package
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6075 6c8d7289-2bf4-0310-a012-ef5d649a1542
This commit is contained in:
parent
a4805defdd
commit
bc6dd8194b
|
@ -37,8 +37,8 @@ import java.text.SimpleDateFormat;
|
|||
|
||||
import de.anomic.http.httpRequestHeader;
|
||||
import de.anomic.net.natLib;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverCore;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverSwitch;
|
||||
|
@ -138,8 +138,8 @@ public class AccessTracker_p {
|
|||
prop.put("page_num", entCount);
|
||||
}
|
||||
if ((page == 2) || (page == 4)) {
|
||||
final ArrayList<plasmaSearchQuery> array = (page == 2) ? sb.localSearches : sb.remoteSearches;
|
||||
plasmaSearchQuery searchProfile;
|
||||
final ArrayList<Query> array = (page == 2) ? sb.localSearches : sb.remoteSearches;
|
||||
Query searchProfile;
|
||||
int m = Math.min(maxCount, array.size());
|
||||
long qcountSum = 0;
|
||||
long rcountSum = 0;
|
||||
|
@ -167,7 +167,7 @@ public class AccessTracker_p {
|
|||
} else {
|
||||
// remote search
|
||||
prop.putHTML("page_list_" + entCount + "_peername", (searchProfile.remotepeer == null) ? "<unknown>" : searchProfile.remotepeer.getName());
|
||||
prop.put("page_list_" + entCount + "_queryhashes", plasmaSearchQuery.anonymizedQueryHashes(searchProfile.queryHashes));
|
||||
prop.put("page_list_" + entCount + "_queryhashes", Query.anonymizedQueryHashes(searchProfile.queryHashes));
|
||||
}
|
||||
prop.putNum("page_list_" + entCount + "_querycount", searchProfile.linesPerPage);
|
||||
prop.putNum("page_list_" + entCount + "_resultcount", searchProfile.resultcount);
|
||||
|
|
|
@ -13,6 +13,13 @@
|
|||
Each extraction is specific to the data that is hosted in the database.
|
||||
This interface gives you access to the phpBB3 forums software content.
|
||||
</p>
|
||||
<p>
|
||||
If you read from a imported database, here are some hints to get around problems when importing dumps in phpMyAdmin:
|
||||
<ul>
|
||||
<li>before importing large database dumps, set <pre>$cfg['UploadDir'] = '/tmp';</pre> in phpmyadmin/config.inc.php and place your dump file in /tmp. Otherwise it is not possible to upload files larger than 2MB.</li>
|
||||
<li>deselect the partial import flag/li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
When a export is started, surrogate files are generated into DATA/SURROGATE/in which are automatically fetched by an indexer thread.
|
||||
All indexed surrogate files are then moved to DATA/SURROGATE/out and can be re-cycled when a index is deleted.
|
||||
|
|
|
@ -50,11 +50,11 @@ import de.anomic.kelondro.text.referencePrototype.WordReference;
|
|||
import de.anomic.kelondro.text.referencePrototype.WordReferenceRow;
|
||||
import de.anomic.kelondro.util.DateFormatter;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverSwitch;
|
||||
import de.anomic.yacy.yacyClient;
|
||||
|
@ -478,7 +478,7 @@ public class IndexControlRWIs_p {
|
|||
}
|
||||
|
||||
public static plasmaSearchRankingProcess genSearchresult(final serverObjects prop, final plasmaSwitchboard sb, final byte[] keyhash, final Bitfield filter) {
|
||||
final plasmaSearchQuery query = new plasmaSearchQuery(new String(keyhash), -1, sb.getRanking(), filter);
|
||||
final Query query = new Query(new String(keyhash), -1, sb.getRanking(), filter);
|
||||
final plasmaSearchRankingProcess ranked = new plasmaSearchRankingProcess(sb.indexSegment, query, Integer.MAX_VALUE, 1);
|
||||
ranked.execQuery();
|
||||
|
||||
|
|
|
@ -31,9 +31,9 @@ import java.util.Map.Entry;
|
|||
|
||||
import de.anomic.http.httpRequestHeader;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProfile;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverSwitch;
|
||||
import de.anomic.tools.crypt;
|
||||
|
@ -139,7 +139,7 @@ public class Ranking_p {
|
|||
// we create empty entries for template strings
|
||||
final serverObjects prop = defaultValues();
|
||||
final plasmaSearchRankingProfile ranking;
|
||||
if(sb == null) ranking = new plasmaSearchRankingProfile(plasmaSearchQuery.CONTENTDOM_TEXT);
|
||||
if(sb == null) ranking = new plasmaSearchRankingProfile(Query.CONTENTDOM_TEXT);
|
||||
else ranking = sb.getRanking();
|
||||
putRanking(prop, ranking, "local");
|
||||
return prop;
|
||||
|
@ -156,7 +156,7 @@ public class Ranking_p {
|
|||
|
||||
if (post.containsKey("ResetRanking")) {
|
||||
sb.setConfig("rankingProfile", "");
|
||||
final plasmaSearchRankingProfile ranking = new plasmaSearchRankingProfile(plasmaSearchQuery.CONTENTDOM_TEXT);
|
||||
final plasmaSearchRankingProfile ranking = new plasmaSearchRankingProfile(Query.CONTENTDOM_TEXT);
|
||||
final serverObjects prop = defaultValues();
|
||||
//prop.putAll(ranking.toExternalMap("local"));
|
||||
putRanking(prop, ranking, "local");
|
||||
|
|
|
@ -34,9 +34,9 @@ import de.anomic.kelondro.text.Segment;
|
|||
import de.anomic.kelondro.text.TermSearch;
|
||||
import de.anomic.kelondro.text.referencePrototype.WordReference;
|
||||
import de.anomic.kelondro.util.DateFormatter;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverSwitch;
|
||||
import de.anomic.tools.iso639;
|
||||
|
@ -63,7 +63,7 @@ public final class timeline {
|
|||
language = (agent == null) ? "en" : iso639.userAgentLanguageDetection(agent);
|
||||
if (language == null) language = "en";
|
||||
}
|
||||
final TreeSet<String>[] query = plasmaSearchQuery.cleanQuery(querystring); // converts also umlaute
|
||||
final TreeSet<String>[] query = Query.cleanQuery(querystring); // converts also umlaute
|
||||
TreeSet<byte[]> q = Word.words2hashes(query[0]);
|
||||
|
||||
// tell all threads to do nothing for a specific time
|
||||
|
@ -108,7 +108,7 @@ public final class timeline {
|
|||
|
||||
// log
|
||||
yacyCore.log.logInfo("EXIT TIMELINE SEARCH: " +
|
||||
plasmaSearchQuery.anonymizedQueryHashes(q) + " - " + joincount + " links found, " +
|
||||
Query.anonymizedQueryHashes(q) + " - " + joincount + " links found, " +
|
||||
prop.get("linkcount", "?") + " links selected, " +
|
||||
indexabstractContainercount + " index abstracts, " +
|
||||
(System.currentTimeMillis() - timestamp) + " milliseconds");
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
|
||||
|
||||
import de.anomic.http.httpRequestHeader;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.plasma.plasmaSwitchboardConstants;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverSwitch;
|
||||
|
||||
|
@ -79,13 +79,13 @@ public class index {
|
|||
//global = global && indexDistributeGranted && indexReceiveGranted;
|
||||
|
||||
// search domain
|
||||
int contentdom = plasmaSearchQuery.CONTENTDOM_TEXT;
|
||||
int contentdom = Query.CONTENTDOM_TEXT;
|
||||
final String cds = (post == null) ? "text" : post.get("contentdom", "text");
|
||||
if (cds.equals("text")) contentdom = plasmaSearchQuery.CONTENTDOM_TEXT;
|
||||
if (cds.equals("audio")) contentdom = plasmaSearchQuery.CONTENTDOM_AUDIO;
|
||||
if (cds.equals("video")) contentdom = plasmaSearchQuery.CONTENTDOM_VIDEO;
|
||||
if (cds.equals("image")) contentdom = plasmaSearchQuery.CONTENTDOM_IMAGE;
|
||||
if (cds.equals("app")) contentdom = plasmaSearchQuery.CONTENTDOM_APP;
|
||||
if (cds.equals("text")) contentdom = Query.CONTENTDOM_TEXT;
|
||||
if (cds.equals("audio")) contentdom = Query.CONTENTDOM_AUDIO;
|
||||
if (cds.equals("video")) contentdom = Query.CONTENTDOM_VIDEO;
|
||||
if (cds.equals("image")) contentdom = Query.CONTENTDOM_IMAGE;
|
||||
if (cds.equals("app")) contentdom = Query.CONTENTDOM_APP;
|
||||
|
||||
// we create empty entries for template strings
|
||||
String promoteSearchPageGreeting = env.getConfig(plasmaSwitchboardConstants.GREETING, "");
|
||||
|
@ -120,11 +120,11 @@ public class index {
|
|||
prop.put("display", display);
|
||||
prop.putHTML("constraint", constraint);
|
||||
prop.put("searchoptions_display", display);
|
||||
prop.put("contentdomCheckText", (contentdom == plasmaSearchQuery.CONTENTDOM_TEXT) ? "1" : "0");
|
||||
prop.put("contentdomCheckAudio", (contentdom == plasmaSearchQuery.CONTENTDOM_AUDIO) ? "1" : "0");
|
||||
prop.put("contentdomCheckVideo", (contentdom == plasmaSearchQuery.CONTENTDOM_VIDEO) ? "1" : "0");
|
||||
prop.put("contentdomCheckImage", (contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) ? "1" : "0");
|
||||
prop.put("contentdomCheckApp", (contentdom == plasmaSearchQuery.CONTENTDOM_APP) ? "1" : "0");
|
||||
prop.put("contentdomCheckText", (contentdom == Query.CONTENTDOM_TEXT) ? "1" : "0");
|
||||
prop.put("contentdomCheckAudio", (contentdom == Query.CONTENTDOM_AUDIO) ? "1" : "0");
|
||||
prop.put("contentdomCheckVideo", (contentdom == Query.CONTENTDOM_VIDEO) ? "1" : "0");
|
||||
prop.put("contentdomCheckImage", (contentdom == Query.CONTENTDOM_IMAGE) ? "1" : "0");
|
||||
prop.put("contentdomCheckApp", (contentdom == Query.CONTENTDOM_APP) ? "1" : "0");
|
||||
// online caution timing
|
||||
sb.localSearchLastAccess = System.currentTimeMillis();
|
||||
|
||||
|
|
|
@ -44,11 +44,11 @@ import de.anomic.kelondro.util.SortStack;
|
|||
import de.anomic.net.natLib;
|
||||
import de.anomic.plasma.plasmaProfiling;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProfile;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.plasma.plasmaSearchEvent.ResultEntry;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess.NavigatorEntry;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverCore;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverProfiling;
|
||||
|
@ -157,7 +157,7 @@ public final class search {
|
|||
// tell all threads to do nothing for a specific time
|
||||
sb.intermissionAllThreads(3000);
|
||||
|
||||
final TreeSet<byte[]> abstractSet = ((abstracts.length() == 0) || (abstracts.equals("auto"))) ? null : plasmaSearchQuery.hashes2Set(abstracts);
|
||||
final TreeSet<byte[]> abstractSet = ((abstracts.length() == 0) || (abstracts.equals("auto"))) ? null : Query.hashes2Set(abstracts);
|
||||
|
||||
// store accessing peer
|
||||
final yacySeed remoteSeed = yacySeed.genRemoteSeed(oseed, key, false);
|
||||
|
@ -168,23 +168,23 @@ public final class search {
|
|||
}
|
||||
|
||||
// prepare search
|
||||
final TreeSet<byte[]> queryhashes = plasmaSearchQuery.hashes2Set(query);
|
||||
final TreeSet<byte[]> excludehashes = (exclude.length() == 0) ? new TreeSet<byte[]>(Base64Order.enhancedCoder) : plasmaSearchQuery.hashes2Set(exclude);
|
||||
final TreeSet<byte[]> queryhashes = Query.hashes2Set(query);
|
||||
final TreeSet<byte[]> excludehashes = (exclude.length() == 0) ? new TreeSet<byte[]>(Base64Order.enhancedCoder) : Query.hashes2Set(exclude);
|
||||
final long timestamp = System.currentTimeMillis();
|
||||
|
||||
// prepare a search profile
|
||||
final plasmaSearchRankingProfile rankingProfile = (profile.length() == 0) ? new plasmaSearchRankingProfile(plasmaSearchQuery.contentdomParser(contentdom)) : new plasmaSearchRankingProfile("", profile);
|
||||
final plasmaSearchRankingProfile rankingProfile = (profile.length() == 0) ? new plasmaSearchRankingProfile(Query.contentdomParser(contentdom)) : new plasmaSearchRankingProfile("", profile);
|
||||
|
||||
// prepare an abstract result
|
||||
final StringBuilder indexabstract = new StringBuilder();
|
||||
int indexabstractContainercount = 0;
|
||||
int joincount = 0;
|
||||
plasmaSearchQuery theQuery = null;
|
||||
Query theQuery = null;
|
||||
ArrayList<SortStack<ResultEntry>.stackElement> accu = null;
|
||||
plasmaSearchEvent theSearch = null;
|
||||
if ((query.length() == 0) && (abstractSet != null)) {
|
||||
// this is _not_ a normal search, only a request for index abstracts
|
||||
theQuery = new plasmaSearchQuery(
|
||||
theQuery = new Query(
|
||||
null,
|
||||
abstractSet,
|
||||
new TreeSet<byte[]>(Base64Order.enhancedCoder),
|
||||
|
@ -192,14 +192,14 @@ public final class search {
|
|||
rankingProfile,
|
||||
maxdist,
|
||||
prefer,
|
||||
plasmaSearchQuery.contentdomParser(contentdom),
|
||||
Query.contentdomParser(contentdom),
|
||||
language,
|
||||
"", // no navigation
|
||||
false,
|
||||
count,
|
||||
0,
|
||||
filter,
|
||||
plasmaSearchQuery.SEARCHDOM_LOCAL,
|
||||
Query.SEARCHDOM_LOCAL,
|
||||
null,
|
||||
-1,
|
||||
null,
|
||||
|
@ -209,12 +209,12 @@ public final class search {
|
|||
yacyURL.TLD_any_zone_filter,
|
||||
client,
|
||||
false);
|
||||
theQuery.domType = plasmaSearchQuery.SEARCHDOM_LOCAL;
|
||||
yacyCore.log.logInfo("INIT HASH SEARCH (abstracts only): " + plasmaSearchQuery.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
|
||||
theQuery.domType = Query.SEARCHDOM_LOCAL;
|
||||
yacyCore.log.logInfo("INIT HASH SEARCH (abstracts only): " + Query.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
|
||||
|
||||
final long timer = System.currentTimeMillis();
|
||||
//final Map<byte[], ReferenceContainer<WordReference>>[] containers = sb.indexSegment.index().searchTerm(theQuery.queryHashes, theQuery.excludeHashes, plasmaSearchQuery.hashes2StringSet(urls));
|
||||
final HashMap<byte[], ReferenceContainer<WordReference>> incc = sb.indexSegment.termIndex().searchConjunction(theQuery.queryHashes, plasmaSearchQuery.hashes2StringSet(urls));
|
||||
final HashMap<byte[], ReferenceContainer<WordReference>> incc = sb.indexSegment.termIndex().searchConjunction(theQuery.queryHashes, Query.hashes2StringSet(urls));
|
||||
|
||||
serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(theQuery.id(true), plasmaSearchEvent.COLLECTION, incc.size(), System.currentTimeMillis() - timer), false);
|
||||
if (incc != null) {
|
||||
|
@ -236,7 +236,7 @@ public final class search {
|
|||
|
||||
} else {
|
||||
// retrieve index containers from search request
|
||||
theQuery = new plasmaSearchQuery(
|
||||
theQuery = new Query(
|
||||
null,
|
||||
queryhashes,
|
||||
excludehashes,
|
||||
|
@ -244,7 +244,7 @@ public final class search {
|
|||
rankingProfile,
|
||||
maxdist,
|
||||
prefer,
|
||||
plasmaSearchQuery.
|
||||
Query.
|
||||
contentdomParser(contentdom),
|
||||
language,
|
||||
"", // no navigation
|
||||
|
@ -252,7 +252,7 @@ public final class search {
|
|||
count,
|
||||
0,
|
||||
filter,
|
||||
plasmaSearchQuery.SEARCHDOM_LOCAL,
|
||||
Query.SEARCHDOM_LOCAL,
|
||||
null,
|
||||
-1,
|
||||
constraint,
|
||||
|
@ -262,9 +262,9 @@ public final class search {
|
|||
yacyURL.TLD_any_zone_filter,
|
||||
client,
|
||||
false);
|
||||
theQuery.domType = plasmaSearchQuery.SEARCHDOM_LOCAL;
|
||||
yacyCore.log.logInfo("INIT HASH SEARCH (query-" + abstracts + "): " + plasmaSearchQuery.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
|
||||
RSSFeed.channels(RSSFeed.REMOTESEARCH).addMessage(new RSSMessage("Remote Search Request from " + ((remoteSeed == null) ? "unknown" : remoteSeed.getName()), plasmaSearchQuery.anonymizedQueryHashes(theQuery.queryHashes), ""));
|
||||
theQuery.domType = Query.SEARCHDOM_LOCAL;
|
||||
yacyCore.log.logInfo("INIT HASH SEARCH (query-" + abstracts + "): " + Query.anonymizedQueryHashes(theQuery.queryHashes) + " - " + theQuery.displayResults() + " links");
|
||||
RSSFeed.channels(RSSFeed.REMOTESEARCH).addMessage(new RSSMessage("Remote Search Request from " + ((remoteSeed == null) ? "unknown" : remoteSeed.getName()), Query.anonymizedQueryHashes(theQuery.queryHashes), ""));
|
||||
|
||||
// make event
|
||||
theSearch = plasmaSearchEvent.getEvent(theQuery, rankingProfile, sb.indexSegment, sb.peers, sb.crawlResults, null, true);
|
||||
|
@ -382,7 +382,7 @@ public final class search {
|
|||
|
||||
// log
|
||||
yacyCore.log.logInfo("EXIT HASH SEARCH: " +
|
||||
plasmaSearchQuery.anonymizedQueryHashes(theQuery.queryHashes) + " - " + joincount + " links found, " +
|
||||
Query.anonymizedQueryHashes(theQuery.queryHashes) + " - " + joincount + " links found, " +
|
||||
prop.get("linkcount", "?") + " links selected, " +
|
||||
indexabstractContainercount + " index abstracts, " +
|
||||
(System.currentTimeMillis() - timestamp) + " milliseconds");
|
||||
|
|
|
@ -42,13 +42,13 @@ import de.anomic.kelondro.util.Log;
|
|||
import de.anomic.plasma.plasmaParserDocument;
|
||||
import de.anomic.plasma.plasmaProfiling;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProfile;
|
||||
import de.anomic.plasma.plasmaSnippetCache;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.plasma.plasmaSwitchboardConstants;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverCore;
|
||||
import de.anomic.server.serverDomains;
|
||||
import de.anomic.server.serverObjects;
|
||||
|
@ -177,10 +177,10 @@ public class yacysearch {
|
|||
if (clustersearch) global = true; // switches search on, but search target is limited to cluster nodes
|
||||
|
||||
// find search domain
|
||||
final int contentdomCode = plasmaSearchQuery.contentdomParser((post == null ? "text" : post.get("contentdom", "text")));
|
||||
final int contentdomCode = Query.contentdomParser((post == null ? "text" : post.get("contentdom", "text")));
|
||||
|
||||
// patch until better search profiles are available
|
||||
if ((contentdomCode != plasmaSearchQuery.CONTENTDOM_TEXT) && (itemsPerPage <= 32)) itemsPerPage = 32;
|
||||
if ((contentdomCode != Query.CONTENTDOM_TEXT) && (itemsPerPage <= 32)) itemsPerPage = 32;
|
||||
|
||||
// check the search tracker
|
||||
TreeSet<Long> trackerHandles = sb.localSearchTracker.get(client);
|
||||
|
@ -340,7 +340,7 @@ public class yacysearch {
|
|||
String navigation = (post == null) ? "" : post.get("nav", "");
|
||||
|
||||
// the query
|
||||
final TreeSet<String>[] query = plasmaSearchQuery.cleanQuery(querystring.trim()); // converts also umlaute
|
||||
final TreeSet<String>[] query = Query.cleanQuery(querystring.trim()); // converts also umlaute
|
||||
|
||||
int maxDistance = (querystring.indexOf('"') >= 0) ? maxDistance = query.length - 1 : Integer.MAX_VALUE;
|
||||
|
||||
|
@ -403,7 +403,7 @@ public class yacysearch {
|
|||
|
||||
// do the search
|
||||
final TreeSet<byte[]> queryHashes = Word.words2hashes(query[0]);
|
||||
final plasmaSearchQuery theQuery = new plasmaSearchQuery(
|
||||
final Query theQuery = new Query(
|
||||
originalquerystring,
|
||||
queryHashes,
|
||||
Word.words2hashes(query[1]),
|
||||
|
@ -418,8 +418,8 @@ public class yacysearch {
|
|||
itemsPerPage,
|
||||
offset,
|
||||
urlmask,
|
||||
(clustersearch && globalsearch) ? plasmaSearchQuery.SEARCHDOM_CLUSTERALL :
|
||||
((globalsearch) ? plasmaSearchQuery.SEARCHDOM_GLOBALDHT : plasmaSearchQuery.SEARCHDOM_LOCAL),
|
||||
(clustersearch && globalsearch) ? Query.SEARCHDOM_CLUSTERALL :
|
||||
((globalsearch) ? Query.SEARCHDOM_GLOBALDHT : Query.SEARCHDOM_LOCAL),
|
||||
"",
|
||||
20,
|
||||
constraint,
|
||||
|
@ -438,7 +438,7 @@ public class yacysearch {
|
|||
theQuery.filterOut(plasmaSwitchboard.blueList);
|
||||
|
||||
// log
|
||||
Log.logInfo("LOCAL_SEARCH", "INIT WORD SEARCH: " + theQuery.queryString + ":" + plasmaSearchQuery.hashSet2hashString(theQuery.queryHashes) + " - " + theQuery.neededResults() + " links to be computed, " + theQuery.displayResults() + " lines to be displayed");
|
||||
Log.logInfo("LOCAL_SEARCH", "INIT WORD SEARCH: " + theQuery.queryString + ":" + Query.hashSet2hashString(theQuery.queryHashes) + " - " + theQuery.neededResults() + " links to be computed, " + theQuery.displayResults() + " lines to be displayed");
|
||||
RSSFeed.channels(RSSFeed.LOCALSEARCH).addMessage(new RSSMessage("Local Search Request", theQuery.queryString, ""));
|
||||
final long timestamp = System.currentTimeMillis();
|
||||
|
||||
|
@ -535,7 +535,7 @@ public class yacysearch {
|
|||
resnav.append("<img src=\"env/grafics/navdl.gif\" width=\"16\" height=\"16\"> ");
|
||||
} else {
|
||||
resnav.append("<a href=\"");
|
||||
resnav.append(plasmaSearchQuery.navurl("html", thispage - 1, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append(Query.navurl("html", thispage - 1, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append("\"><img src=\"env/grafics/navdl.gif\" width=\"16\" height=\"16\"></a> ");
|
||||
}
|
||||
final int numberofpages = Math.min(10, Math.min(thispage + 2, totalcount / theQuery.displayResults()));
|
||||
|
@ -546,7 +546,7 @@ public class yacysearch {
|
|||
resnav.append(".gif\" width=\"16\" height=\"16\"> ");
|
||||
} else {
|
||||
resnav.append("<a href=\"");
|
||||
resnav.append(plasmaSearchQuery.navurl("html", i, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append(Query.navurl("html", i, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append("\"><img src=\"env/grafics/navd");
|
||||
resnav.append(i + 1);
|
||||
resnav.append(".gif\" width=\"16\" height=\"16\"></a> ");
|
||||
|
@ -556,7 +556,7 @@ public class yacysearch {
|
|||
resnav.append("<img src=\"env/grafics/navdr.gif\" width=\"16\" height=\"16\">");
|
||||
} else {
|
||||
resnav.append("<a href=\"");
|
||||
resnav.append(plasmaSearchQuery.navurl("html", thispage + 1, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append(Query.navurl("html", thispage + 1, display, theQuery, originalUrlMask, null, navigation));
|
||||
resnav.append("\"><img src=\"env/grafics/navdr.gif\" width=\"16\" height=\"16\"></a>");
|
||||
}
|
||||
prop.put("num-results_resnav", resnav.toString());
|
||||
|
@ -612,11 +612,11 @@ public class yacysearch {
|
|||
prop.put("constraint", (constraint == null) ? "" : constraint.exportB64());
|
||||
prop.put("verify", (fetchSnippets) ? "true" : "false");
|
||||
prop.put("contentdom", (post == null ? "text" : post.get("contentdom", "text")));
|
||||
prop.put("contentdomCheckText", (contentdomCode == plasmaSearchQuery.CONTENTDOM_TEXT) ? "1" : "0");
|
||||
prop.put("contentdomCheckAudio", (contentdomCode == plasmaSearchQuery.CONTENTDOM_AUDIO) ? "1" : "0");
|
||||
prop.put("contentdomCheckVideo", (contentdomCode == plasmaSearchQuery.CONTENTDOM_VIDEO) ? "1" : "0");
|
||||
prop.put("contentdomCheckImage", (contentdomCode == plasmaSearchQuery.CONTENTDOM_IMAGE) ? "1" : "0");
|
||||
prop.put("contentdomCheckApp", (contentdomCode == plasmaSearchQuery.CONTENTDOM_APP) ? "1" : "0");
|
||||
prop.put("contentdomCheckText", (contentdomCode == Query.CONTENTDOM_TEXT) ? "1" : "0");
|
||||
prop.put("contentdomCheckAudio", (contentdomCode == Query.CONTENTDOM_AUDIO) ? "1" : "0");
|
||||
prop.put("contentdomCheckVideo", (contentdomCode == Query.CONTENTDOM_VIDEO) ? "1" : "0");
|
||||
prop.put("contentdomCheckImage", (contentdomCode == Query.CONTENTDOM_IMAGE) ? "1" : "0");
|
||||
prop.put("contentdomCheckApp", (contentdomCode == Query.CONTENTDOM_APP) ? "1" : "0");
|
||||
|
||||
// for RSS: don't HTML encode some elements
|
||||
prop.putXML("rss_query", originalquerystring);
|
||||
|
|
|
@ -33,10 +33,10 @@ import java.util.TreeSet;
|
|||
import de.anomic.http.httpRequestHeader;
|
||||
import de.anomic.plasma.plasmaProfiling;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess;
|
||||
import de.anomic.plasma.plasmaSnippetCache;
|
||||
import de.anomic.plasma.plasmaSwitchboard;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverProfiling;
|
||||
import de.anomic.server.serverSwitch;
|
||||
|
@ -77,7 +77,7 @@ public class yacysearchitem {
|
|||
// the event does not exist, show empty page
|
||||
return prop;
|
||||
}
|
||||
final plasmaSearchQuery theQuery = theSearch.getQuery();
|
||||
final Query theQuery = theSearch.getQuery();
|
||||
|
||||
// dynamically update count values
|
||||
final int offset = theQuery.neededResults() - theQuery.displayResults() + 1;
|
||||
|
@ -89,7 +89,7 @@ public class yacysearchitem {
|
|||
prop.put("remoteIndexCount", Formatter.number(theSearch.getRankingResult().getRemoteIndexCount(), true));
|
||||
prop.put("remotePeerCount", Formatter.number(theSearch.getRankingResult().getRemotePeerCount(), true));
|
||||
|
||||
if (theQuery.contentdom == plasmaSearchQuery.CONTENTDOM_TEXT) {
|
||||
if (theQuery.contentdom == Query.CONTENTDOM_TEXT) {
|
||||
// text search
|
||||
|
||||
// generate result object
|
||||
|
@ -151,7 +151,7 @@ public class yacysearchitem {
|
|||
return prop;
|
||||
}
|
||||
|
||||
if (theQuery.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) {
|
||||
if (theQuery.contentdom == Query.CONTENTDOM_IMAGE) {
|
||||
// image search; shows thumbnails
|
||||
|
||||
prop.put("content", theQuery.contentdom + 1); // switch on specific content
|
||||
|
@ -171,9 +171,9 @@ public class yacysearchitem {
|
|||
return prop;
|
||||
}
|
||||
|
||||
if ((theQuery.contentdom == plasmaSearchQuery.CONTENTDOM_AUDIO) ||
|
||||
(theQuery.contentdom == plasmaSearchQuery.CONTENTDOM_VIDEO) ||
|
||||
(theQuery.contentdom == plasmaSearchQuery.CONTENTDOM_APP)) {
|
||||
if ((theQuery.contentdom == Query.CONTENTDOM_AUDIO) ||
|
||||
(theQuery.contentdom == Query.CONTENTDOM_VIDEO) ||
|
||||
(theQuery.contentdom == Query.CONTENTDOM_APP)) {
|
||||
// any other media content
|
||||
|
||||
// generate result object
|
||||
|
|
|
@ -30,8 +30,8 @@ import java.util.Iterator;
|
|||
import de.anomic.http.httpRequestHeader;
|
||||
import de.anomic.plasma.plasmaProfiling;
|
||||
import de.anomic.plasma.plasmaSearchEvent;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess.NavigatorEntry;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverObjects;
|
||||
import de.anomic.server.serverProfiling;
|
||||
import de.anomic.server.serverSwitch;
|
||||
|
@ -53,7 +53,7 @@ public class yacysearchtrailer {
|
|||
// the event does not exist, show empty page
|
||||
return prop;
|
||||
}
|
||||
final plasmaSearchQuery theQuery = theSearch.getQuery();
|
||||
final Query theQuery = theSearch.getQuery();
|
||||
|
||||
// compose search navigation
|
||||
|
||||
|
@ -68,8 +68,8 @@ public class yacysearchtrailer {
|
|||
for (i = 0; i < hostNavigator.size(); i++) {
|
||||
entry = hostNavigator.get(i);
|
||||
prop.put("nav-domains_element_" + i + "_name", entry.name);
|
||||
prop.put("nav-domains_element_" + i + "_url", "<a href=\"" + plasmaSearchQuery.navurl("html", 0, display, theQuery, theQuery.urlMask, "site:" + entry.name, theQuery.navigators) + "\">" + entry.name + " (" + entry.count + ")</a>");
|
||||
prop.putJSON("nav-domains_element_" + i + "_url-json", plasmaSearchQuery.navurl("json", 0, display, theQuery, theQuery.urlMask, "site:" + entry.name, theQuery.navigators));
|
||||
prop.put("nav-domains_element_" + i + "_url", "<a href=\"" + Query.navurl("html", 0, display, theQuery, theQuery.urlMask, "site:" + entry.name, theQuery.navigators) + "\">" + entry.name + " (" + entry.count + ")</a>");
|
||||
prop.putJSON("nav-domains_element_" + i + "_url-json", Query.navurl("json", 0, display, theQuery, theQuery.urlMask, "site:" + entry.name, theQuery.navigators));
|
||||
prop.put("nav-domains_element_" + i + "_count", entry.count);
|
||||
prop.put("nav-domains_element_" + i + "_modifier", "site:" + entry.name);
|
||||
prop.put("nav-domains_element_" + i + "_nl", 1);
|
||||
|
@ -92,8 +92,8 @@ public class yacysearchtrailer {
|
|||
entry = authorNavigator.get(i);
|
||||
anav = (entry.name.indexOf(' ') < 0) ? "author:" + entry.name : "author:'" + entry.name + "'";
|
||||
prop.put("nav-authors_element_" + i + "_name", entry.name);
|
||||
prop.put("nav-authors_element_" + i + "_url", "<a href=\"" + plasmaSearchQuery.navurl("html", 0, display, theQuery, theQuery.urlMask, anav, theQuery.navigators) + "\">" + entry.name + " (" + entry.count + ")</a>");
|
||||
prop.putJSON("nav-authors_element_" + i + "_url-json", plasmaSearchQuery.navurl("json", 0, display, theQuery, theQuery.urlMask, anav, theQuery.navigators));
|
||||
prop.put("nav-authors_element_" + i + "_url", "<a href=\"" + Query.navurl("html", 0, display, theQuery, theQuery.urlMask, anav, theQuery.navigators) + "\">" + entry.name + " (" + entry.count + ")</a>");
|
||||
prop.putJSON("nav-authors_element_" + i + "_url-json", Query.navurl("json", 0, display, theQuery, theQuery.urlMask, anav, theQuery.navigators));
|
||||
prop.put("nav-authors_element_" + i + "_count", entry.count);
|
||||
prop.put("nav-authors_element_" + i + "_modifier", "author:'" + entry.name + "'");
|
||||
prop.put("nav-authors_element_" + i + "_nl", 1);
|
||||
|
@ -114,8 +114,8 @@ public class yacysearchtrailer {
|
|||
if (/*(theQuery == null) ||*/ (theQuery.queryString == null)) break;
|
||||
if (e != null && e.name != null) {
|
||||
prop.putHTML("nav-topics_element_" + i + "_name", e.name);
|
||||
prop.put("nav-topics_element_" + i + "_url", "<a href=\"" + plasmaSearchQuery.navurl("html", 0, display, theQuery, theQuery.urlMask, e.name, theQuery.navigators) + "\">" + e.name + " (" + e.count + ")</a>");
|
||||
prop.putJSON("nav-topics_element_" + i + "_url-json", plasmaSearchQuery.navurl("json", 0, display, theQuery, theQuery.urlMask, e.name, theQuery.navigators));
|
||||
prop.put("nav-topics_element_" + i + "_url", "<a href=\"" + Query.navurl("html", 0, display, theQuery, theQuery.urlMask, e.name, theQuery.navigators) + "\">" + e.name + " (" + e.count + ")</a>");
|
||||
prop.putJSON("nav-topics_element_" + i + "_url-json", Query.navurl("json", 0, display, theQuery, theQuery.urlMask, e.name, theQuery.navigators));
|
||||
prop.put("nav-topics_element_" + i + "_count", e.count);
|
||||
prop.put("nav-topics_element_" + i + "_modifier", e.name);
|
||||
prop.put("nav-topics_element_" + i + "_nl", (iter.hasNext() && i < MAX_TOPWORDS) ? 1 : 0);
|
||||
|
|
|
@ -45,7 +45,7 @@ import de.anomic.kelondro.text.referencePrototype.WordReferenceRow;
|
|||
import de.anomic.kelondro.util.DateFormatter;
|
||||
import de.anomic.kelondro.util.FileUtils;
|
||||
import de.anomic.kelondro.util.kelondroException;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverCharBuffer;
|
||||
import de.anomic.server.serverCodings;
|
||||
import de.anomic.tools.crypt;
|
||||
|
@ -254,7 +254,7 @@ public class URLMetadataRow implements Metadata {
|
|||
this.entry.setCol(col_wc, Integer.parseInt(prop.getProperty("wc", "0")));
|
||||
this.entry.setCol(col_dt, new byte[]{(byte) prop.getProperty("dt", "t").charAt(0)});
|
||||
final String flags = prop.getProperty("flags", "AAAAAA");
|
||||
this.entry.setCol(col_flags, (flags.length() > 6) ? plasmaSearchQuery.empty_constraint.bytes() : (new Bitfield(4, flags)).bytes());
|
||||
this.entry.setCol(col_flags, (flags.length() > 6) ? Query.empty_constraint.bytes() : (new Bitfield(4, flags)).bytes());
|
||||
try {
|
||||
this.entry.setCol(col_lang, prop.getProperty("lang", "uk").getBytes("UTF-8"));
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
|
|
|
@ -35,6 +35,7 @@ import java.awt.image.BufferedImage;
|
|||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.yacy.yacySearch;
|
||||
import de.anomic.yacy.yacySeed;
|
||||
import de.anomic.yacy.yacySeedDB;
|
||||
|
@ -144,7 +145,7 @@ public class plasmaGrafics {
|
|||
}
|
||||
|
||||
// draw in the search target
|
||||
final plasmaSearchQuery query = event.getQuery();
|
||||
final Query query = event.getQuery();
|
||||
final Iterator<byte[]> i = query.queryHashes.iterator();
|
||||
eventPicture.setColor(ymageMatrix.GREY);
|
||||
while (i.hasNext()) {
|
||||
|
|
|
@ -54,6 +54,7 @@ import de.anomic.plasma.parser.Word;
|
|||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess.NavigatorEntry;
|
||||
import de.anomic.plasma.plasmaSnippetCache.MediaSnippet;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverProfiling;
|
||||
import de.anomic.yacy.yacySearch;
|
||||
import de.anomic.yacy.yacySeed;
|
||||
|
@ -75,10 +76,10 @@ public final class plasmaSearchEvent {
|
|||
public static String lastEventID = "";
|
||||
private static ConcurrentHashMap<String, plasmaSearchEvent> lastEvents = new ConcurrentHashMap<String, plasmaSearchEvent>(); // a cache for objects from this class: re-use old search requests
|
||||
public static final long eventLifetime = 60000; // the time an event will stay in the cache, 1 Minute
|
||||
private static final int max_results_preparation = 300;
|
||||
private static final int max_results_preparation = 1000;
|
||||
|
||||
private long eventTime;
|
||||
plasmaSearchQuery query;
|
||||
Query query;
|
||||
private final Segment indexSegment;
|
||||
private final yacySeedDB peers;
|
||||
plasmaSearchRankingProcess rankedCache; // ordered search results, grows dynamically as all the query threads enrich this container
|
||||
|
@ -100,7 +101,7 @@ public final class plasmaSearchEvent {
|
|||
public ResultURLs crawlResults;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private plasmaSearchEvent(final plasmaSearchQuery query,
|
||||
private plasmaSearchEvent(final Query query,
|
||||
final Segment indexSegment,
|
||||
final yacySeedDB peers,
|
||||
final ResultURLs crawlResults,
|
||||
|
@ -136,8 +137,8 @@ public final class plasmaSearchEvent {
|
|||
}
|
||||
|
||||
final long start = System.currentTimeMillis();
|
||||
if ((query.domType == plasmaSearchQuery.SEARCHDOM_GLOBALDHT) ||
|
||||
(query.domType == plasmaSearchQuery.SEARCHDOM_CLUSTERALL)) {
|
||||
if ((query.domType == Query.SEARCHDOM_GLOBALDHT) ||
|
||||
(query.domType == Query.SEARCHDOM_CLUSTERALL)) {
|
||||
|
||||
// initialize a ranking process that is the target for data
|
||||
// that is generated concurrently from local and global search threads
|
||||
|
@ -152,8 +153,8 @@ public final class plasmaSearchEvent {
|
|||
final int fetchpeers = 12;
|
||||
Log.logFine("SEARCH_EVENT", "STARTING " + fetchpeers + " THREADS TO CATCH EACH " + query.displayResults() + " URLs");
|
||||
this.primarySearchThreads = yacySearch.primaryRemoteSearches(
|
||||
plasmaSearchQuery.hashSet2hashString(query.queryHashes),
|
||||
plasmaSearchQuery.hashSet2hashString(query.excludeHashes),
|
||||
Query.hashSet2hashString(query.queryHashes),
|
||||
Query.hashSet2hashString(query.excludeHashes),
|
||||
"",
|
||||
query.prefer,
|
||||
query.urlMask,
|
||||
|
@ -171,7 +172,7 @@ public final class plasmaSearchEvent {
|
|||
plasmaSwitchboard.urlBlacklist,
|
||||
query.ranking,
|
||||
query.constraint,
|
||||
(query.domType == plasmaSearchQuery.SEARCHDOM_GLOBALDHT) ? null : preselectedPeerHashes);
|
||||
(query.domType == Query.SEARCHDOM_GLOBALDHT) ? null : preselectedPeerHashes);
|
||||
serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(query.id(true), "remote search thread start", this.primarySearchThreads.length, System.currentTimeMillis() - timer), false);
|
||||
|
||||
// finished searching
|
||||
|
@ -303,9 +304,9 @@ public final class plasmaSearchEvent {
|
|||
final long dbRetrievalTime = System.currentTimeMillis() - startTime;
|
||||
|
||||
// check exclusion
|
||||
if ((plasmaSearchQuery.matches(pagetitle, query.excludeHashes)) ||
|
||||
(plasmaSearchQuery.matches(pageurl, query.excludeHashes)) ||
|
||||
(plasmaSearchQuery.matches(pageauthor, query.excludeHashes))) {
|
||||
if ((Query.matches(pagetitle, query.excludeHashes)) ||
|
||||
(Query.matches(pageurl, query.excludeHashes)) ||
|
||||
(Query.matches(pageauthor, query.excludeHashes))) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -324,19 +325,19 @@ public final class plasmaSearchEvent {
|
|||
return null;
|
||||
}
|
||||
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_AUDIO) && (page.laudio() == 0)) {
|
||||
if ((query.contentdom == Query.CONTENTDOM_AUDIO) && (page.laudio() == 0)) {
|
||||
registerFailure(page.hash(), "contentdom-audio constraint not fullfilled");
|
||||
return null;
|
||||
}
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_VIDEO) && (page.lvideo() == 0)) {
|
||||
if ((query.contentdom == Query.CONTENTDOM_VIDEO) && (page.lvideo() == 0)) {
|
||||
registerFailure(page.hash(), "contentdom-video constraint not fullfilled");
|
||||
return null;
|
||||
}
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (page.limage() == 0)) {
|
||||
if ((query.contentdom == Query.CONTENTDOM_IMAGE) && (page.limage() == 0)) {
|
||||
registerFailure(page.hash(), "contentdom-image constraint not fullfilled");
|
||||
return null;
|
||||
}
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_APP) && (page.lapp() == 0)) {
|
||||
if ((query.contentdom == Query.CONTENTDOM_APP) && (page.lapp() == 0)) {
|
||||
registerFailure(page.hash(), "contentdom-app constraint not fullfilled");
|
||||
return null;
|
||||
}
|
||||
|
@ -346,7 +347,7 @@ public final class plasmaSearchEvent {
|
|||
}
|
||||
|
||||
// load snippet
|
||||
if (query.contentdom == plasmaSearchQuery.CONTENTDOM_TEXT) {
|
||||
if (query.contentdom == Query.CONTENTDOM_TEXT) {
|
||||
// attach text snippet
|
||||
startTime = System.currentTimeMillis();
|
||||
final plasmaSnippetCache.TextSnippet snippet = plasmaSnippetCache.retrieveTextSnippet(metadata, snippetFetchWordHashes, (snippetFetchMode == 2), ((query.constraint != null) && (query.constraint.get(Condenser.flag_cat_indexof))), 180, 3000, (snippetFetchMode == 2) ? Integer.MAX_VALUE : 30000, query.isGlobal());
|
||||
|
@ -429,7 +430,7 @@ public final class plasmaSearchEvent {
|
|||
return count;
|
||||
}
|
||||
|
||||
public plasmaSearchQuery getQuery() {
|
||||
public Query getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
|
@ -458,7 +459,7 @@ public final class plasmaSearchEvent {
|
|||
}
|
||||
|
||||
public static plasmaSearchEvent getEvent(
|
||||
final plasmaSearchQuery query,
|
||||
final Query query,
|
||||
final plasmaSearchRankingProfile ranking,
|
||||
final Segment indexSegment,
|
||||
final yacySeedDB peers,
|
||||
|
@ -488,7 +489,7 @@ public final class plasmaSearchEvent {
|
|||
} else {
|
||||
// if worker threads had been alive, but did not succeed, start them again to fetch missing links
|
||||
if ((!event.anyWorkerAlive()) &&
|
||||
(((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (event.images.size() + 30 < query.neededResults())) ||
|
||||
(((query.contentdom == Query.CONTENTDOM_IMAGE) && (event.images.size() + 30 < query.neededResults())) ||
|
||||
(event.result.size() < query.neededResults() + 10)) &&
|
||||
//(event.query.onlineSnippetFetch) &&
|
||||
(event.getRankingResult().getLocalResourceSize() + event.getRankingResult().getRemoteResourceSize() > event.result.size())) {
|
||||
|
@ -533,8 +534,8 @@ public final class plasmaSearchEvent {
|
|||
this.lastLifeSign = System.currentTimeMillis();
|
||||
|
||||
// check if we have enough
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (images.size() >= query.neededResults() + fetchAhead)) break;
|
||||
if ((query.contentdom != plasmaSearchQuery.CONTENTDOM_IMAGE) && (result.size() >= query.neededResults() + fetchAhead)) break;
|
||||
if ((query.contentdom == Query.CONTENTDOM_IMAGE) && (images.size() >= query.neededResults() + fetchAhead)) break;
|
||||
if ((query.contentdom != Query.CONTENTDOM_IMAGE) && (result.size() >= query.neededResults() + fetchAhead)) break;
|
||||
|
||||
// get next entry
|
||||
page = rankedCache.bestURL(true);
|
||||
|
@ -601,8 +602,8 @@ public final class plasmaSearchEvent {
|
|||
// we have the wanted result already in the result array .. return that
|
||||
return this.result.element(item).element;
|
||||
}
|
||||
if ((query.domType == plasmaSearchQuery.SEARCHDOM_GLOBALDHT) ||
|
||||
(query.domType == plasmaSearchQuery.SEARCHDOM_CLUSTERALL)) {
|
||||
if ((query.domType == Query.SEARCHDOM_GLOBALDHT) ||
|
||||
(query.domType == Query.SEARCHDOM_CLUSTERALL)) {
|
||||
// this is a search using remote search threads. Also the local
|
||||
// search thread is started as background process
|
||||
if ((localSearchThread != null) && (localSearchThread.isAlive())) {
|
||||
|
|
|
@ -54,6 +54,7 @@ import de.anomic.kelondro.util.SortStack;
|
|||
import de.anomic.kelondro.util.FileUtils;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverProfiling;
|
||||
import de.anomic.yacy.yacyURL;
|
||||
|
||||
|
@ -67,7 +68,7 @@ public final class plasmaSearchRankingProcess {
|
|||
private final SortStack<WordReferenceVars> stack;
|
||||
private final HashMap<String, SortStack<WordReferenceVars>> doubleDomCache; // key = domhash (6 bytes); value = like stack
|
||||
private final HashSet<String> handover; // key = urlhash; used for double-check of urls that had been handed over to search process
|
||||
private final plasmaSearchQuery query;
|
||||
private final Query query;
|
||||
private final int maxentries;
|
||||
private int remote_peerCount, remote_indexCount, remote_resourceSize, local_resourceSize;
|
||||
private final ReferenceOrder order;
|
||||
|
@ -83,7 +84,7 @@ public final class plasmaSearchRankingProcess {
|
|||
|
||||
public plasmaSearchRankingProcess(
|
||||
final Segment indexSegment,
|
||||
final plasmaSearchQuery query,
|
||||
final Query query,
|
||||
final int maxentries,
|
||||
final int concurrency) {
|
||||
// we collect the urlhashes and construct a list with urlEntry objects
|
||||
|
@ -184,11 +185,11 @@ public final class plasmaSearchRankingProcess {
|
|||
if (!testFlags(iEntry)) continue;
|
||||
|
||||
// check document domain
|
||||
if (query.contentdom != plasmaSearchQuery.CONTENTDOM_TEXT) {
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_AUDIO) && (!(iEntry.flags().get(Condenser.flag_cat_hasaudio)))) continue;
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_VIDEO) && (!(iEntry.flags().get(Condenser.flag_cat_hasvideo)))) continue;
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) && (!(iEntry.flags().get(Condenser.flag_cat_hasimage)))) continue;
|
||||
if ((query.contentdom == plasmaSearchQuery.CONTENTDOM_APP ) && (!(iEntry.flags().get(Condenser.flag_cat_hasapp )))) continue;
|
||||
if (query.contentdom != Query.CONTENTDOM_TEXT) {
|
||||
if ((query.contentdom == Query.CONTENTDOM_AUDIO) && (!(iEntry.flags().get(Condenser.flag_cat_hasaudio)))) continue;
|
||||
if ((query.contentdom == Query.CONTENTDOM_VIDEO) && (!(iEntry.flags().get(Condenser.flag_cat_hasvideo)))) continue;
|
||||
if ((query.contentdom == Query.CONTENTDOM_IMAGE) && (!(iEntry.flags().get(Condenser.flag_cat_hasimage)))) continue;
|
||||
if ((query.contentdom == Query.CONTENTDOM_APP ) && (!(iEntry.flags().get(Condenser.flag_cat_hasapp )))) continue;
|
||||
}
|
||||
|
||||
// check tld domain
|
||||
|
@ -620,10 +621,10 @@ public final class plasmaSearchRankingProcess {
|
|||
long r = (255 - position) << 8;
|
||||
|
||||
// for media search: prefer pages with many links
|
||||
if (query.contentdom == plasmaSearchQuery.CONTENTDOM_IMAGE) r += rentry.limage() << query.ranking.coeff_cathasimage;
|
||||
if (query.contentdom == plasmaSearchQuery.CONTENTDOM_AUDIO) r += rentry.laudio() << query.ranking.coeff_cathasaudio;
|
||||
if (query.contentdom == plasmaSearchQuery.CONTENTDOM_VIDEO) r += rentry.lvideo() << query.ranking.coeff_cathasvideo;
|
||||
if (query.contentdom == plasmaSearchQuery.CONTENTDOM_APP ) r += rentry.lapp() << query.ranking.coeff_cathasapp;
|
||||
if (query.contentdom == Query.CONTENTDOM_IMAGE) r += rentry.limage() << query.ranking.coeff_cathasimage;
|
||||
if (query.contentdom == Query.CONTENTDOM_AUDIO) r += rentry.laudio() << query.ranking.coeff_cathasaudio;
|
||||
if (query.contentdom == Query.CONTENTDOM_VIDEO) r += rentry.lvideo() << query.ranking.coeff_cathasvideo;
|
||||
if (query.contentdom == Query.CONTENTDOM_APP ) r += rentry.lapp() << query.ranking.coeff_cathasapp;
|
||||
|
||||
// prefer hit with 'prefer' pattern
|
||||
if (rentry.url().toNormalform(true, true).matches(query.prefer)) r += 256 << query.ranking.coeff_prefer;
|
||||
|
|
|
@ -26,6 +26,8 @@ import java.util.HashMap;
|
|||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import de.anomic.search.Query;
|
||||
|
||||
public class plasmaSearchRankingProfile {
|
||||
|
||||
// pre-sort attributes
|
||||
|
@ -101,11 +103,11 @@ public class plasmaSearchRankingProfile {
|
|||
coeff_app_dc_subject = 13;
|
||||
coeff_app_dc_description = 13;
|
||||
coeff_appemph = 10;
|
||||
coeff_catindexof = (mediatype == plasmaSearchQuery.CONTENTDOM_TEXT) ? 0 : 15;
|
||||
coeff_cathasimage = (mediatype == plasmaSearchQuery.CONTENTDOM_IMAGE) ? 15 : 0;
|
||||
coeff_cathasaudio = (mediatype == plasmaSearchQuery.CONTENTDOM_AUDIO) ? 15 : 0;
|
||||
coeff_cathasvideo = (mediatype == plasmaSearchQuery.CONTENTDOM_VIDEO) ? 15 : 0;
|
||||
coeff_cathasapp = (mediatype == plasmaSearchQuery.CONTENTDOM_APP) ? 15 : 0;
|
||||
coeff_catindexof = (mediatype == Query.CONTENTDOM_TEXT) ? 0 : 15;
|
||||
coeff_cathasimage = (mediatype == Query.CONTENTDOM_IMAGE) ? 15 : 0;
|
||||
coeff_cathasaudio = (mediatype == Query.CONTENTDOM_AUDIO) ? 15 : 0;
|
||||
coeff_cathasvideo = (mediatype == Query.CONTENTDOM_VIDEO) ? 15 : 0;
|
||||
coeff_cathasapp = (mediatype == Query.CONTENTDOM_APP) ? 15 : 0;
|
||||
coeff_termfrequency = 14;
|
||||
coeff_urlcompintoplist = 3;
|
||||
coeff_descrcompintoplist = 2;
|
||||
|
@ -114,7 +116,7 @@ public class plasmaSearchRankingProfile {
|
|||
}
|
||||
|
||||
public plasmaSearchRankingProfile(final String prefix, final String profile) {
|
||||
this(plasmaSearchQuery.CONTENTDOM_TEXT); // set defaults
|
||||
this(Query.CONTENTDOM_TEXT); // set defaults
|
||||
if ((profile != null) && (profile.length() > 0)) {
|
||||
//parse external form
|
||||
final HashMap<String, Integer> coeff = new HashMap<String, Integer>();
|
||||
|
|
|
@ -51,6 +51,7 @@ import de.anomic.plasma.parser.Document;
|
|||
import de.anomic.plasma.parser.ParserException;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.yacy.yacySearch;
|
||||
import de.anomic.yacy.yacyURL;
|
||||
|
||||
|
@ -707,10 +708,10 @@ public class plasmaSnippetCache {
|
|||
final plasmaParserDocument document = retrieveDocument(url, fetchOnline, timeout, false, reindexing);
|
||||
final ArrayList<MediaSnippet> a = new ArrayList<MediaSnippet>();
|
||||
if (document != null) {
|
||||
if ((mediatype == plasmaSearchQuery.CONTENTDOM_ALL) || (mediatype == plasmaSearchQuery.CONTENTDOM_AUDIO)) a.addAll(computeMediaSnippets(document, queryhashes, plasmaSearchQuery.CONTENTDOM_AUDIO));
|
||||
if ((mediatype == plasmaSearchQuery.CONTENTDOM_ALL) || (mediatype == plasmaSearchQuery.CONTENTDOM_VIDEO)) a.addAll(computeMediaSnippets(document, queryhashes, plasmaSearchQuery.CONTENTDOM_VIDEO));
|
||||
if ((mediatype == plasmaSearchQuery.CONTENTDOM_ALL) || (mediatype == plasmaSearchQuery.CONTENTDOM_APP)) a.addAll(computeMediaSnippets(document, queryhashes, plasmaSearchQuery.CONTENTDOM_APP));
|
||||
if ((mediatype == plasmaSearchQuery.CONTENTDOM_ALL) || (mediatype == plasmaSearchQuery.CONTENTDOM_IMAGE)) a.addAll(computeImageSnippets(document, queryhashes));
|
||||
if ((mediatype == Query.CONTENTDOM_ALL) || (mediatype == Query.CONTENTDOM_AUDIO)) a.addAll(computeMediaSnippets(document, queryhashes, Query.CONTENTDOM_AUDIO));
|
||||
if ((mediatype == Query.CONTENTDOM_ALL) || (mediatype == Query.CONTENTDOM_VIDEO)) a.addAll(computeMediaSnippets(document, queryhashes, Query.CONTENTDOM_VIDEO));
|
||||
if ((mediatype == Query.CONTENTDOM_ALL) || (mediatype == Query.CONTENTDOM_APP)) a.addAll(computeMediaSnippets(document, queryhashes, Query.CONTENTDOM_APP));
|
||||
if ((mediatype == Query.CONTENTDOM_ALL) || (mediatype == Query.CONTENTDOM_IMAGE)) a.addAll(computeImageSnippets(document, queryhashes));
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
@ -719,9 +720,9 @@ public class plasmaSnippetCache {
|
|||
|
||||
if (document == null) return new ArrayList<MediaSnippet>();
|
||||
Map<yacyURL, String> media = null;
|
||||
if (mediatype == plasmaSearchQuery.CONTENTDOM_AUDIO) media = document.getAudiolinks();
|
||||
else if (mediatype == plasmaSearchQuery.CONTENTDOM_VIDEO) media = document.getVideolinks();
|
||||
else if (mediatype == plasmaSearchQuery.CONTENTDOM_APP) media = document.getApplinks();
|
||||
if (mediatype == Query.CONTENTDOM_AUDIO) media = document.getAudiolinks();
|
||||
else if (mediatype == Query.CONTENTDOM_VIDEO) media = document.getVideolinks();
|
||||
else if (mediatype == Query.CONTENTDOM_APP) media = document.getApplinks();
|
||||
if (media == null) return null;
|
||||
|
||||
final Iterator<Map.Entry<yacyURL, String>> i = media.entrySet().iterator();
|
||||
|
@ -767,13 +768,13 @@ public class plasmaSnippetCache {
|
|||
s = removeAppearanceHashes(url.toNormalform(false, false), queryhashes);
|
||||
if (s.size() == 0) {
|
||||
final int ranking = ientry.hashCode();
|
||||
result.add(new MediaSnippet(plasmaSearchQuery.CONTENTDOM_IMAGE, url, desc, ientry.width() + " x " + ientry.height(), ranking, document.dc_source()));
|
||||
result.add(new MediaSnippet(Query.CONTENTDOM_IMAGE, url, desc, ientry.width() + " x " + ientry.height(), ranking, document.dc_source()));
|
||||
continue;
|
||||
}
|
||||
s = removeAppearanceHashes(desc, s);
|
||||
if (s.size() == 0) {
|
||||
final int ranking = ientry.hashCode();
|
||||
result.add(new MediaSnippet(plasmaSearchQuery.CONTENTDOM_IMAGE, url, desc, ientry.width() + " x " + ientry.height(), ranking, document.dc_source()));
|
||||
result.add(new MediaSnippet(Query.CONTENTDOM_IMAGE, url, desc, ientry.width() + " x " + ientry.height(), ranking, document.dc_source()));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -164,6 +164,7 @@ import de.anomic.plasma.parser.Document;
|
|||
import de.anomic.plasma.parser.ParserException;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.server.serverAbstractSwitch;
|
||||
import de.anomic.server.serverBusyThread;
|
||||
import de.anomic.server.serverCore;
|
||||
|
@ -246,8 +247,8 @@ public final class plasmaSwitchboard extends serverAbstractSwitch<IndexingStack.
|
|||
public bookmarksDB bookmarksDB;
|
||||
public plasmaWebStructure webStructure;
|
||||
public ImporterManager dbImportManager;
|
||||
public ArrayList<plasmaSearchQuery> localSearches; // array of search result properties as HashMaps
|
||||
public ArrayList<plasmaSearchQuery> remoteSearches; // array of search result properties as HashMaps
|
||||
public ArrayList<Query> localSearches; // array of search result properties as HashMaps
|
||||
public ArrayList<Query> remoteSearches; // array of search result properties as HashMaps
|
||||
public ConcurrentHashMap<String, TreeSet<Long>> localSearchTracker, remoteSearchTracker; // mappings from requesting host to a TreeSet of Long(access time)
|
||||
public long indexedPages = 0;
|
||||
public double requestedQueries = 0d;
|
||||
|
@ -554,8 +555,8 @@ public final class plasmaSwitchboard extends serverAbstractSwitch<IndexingStack.
|
|||
// init search history trackers
|
||||
this.localSearchTracker = new ConcurrentHashMap<String, TreeSet<Long>>(); // String:TreeSet - IP:set of Long(accessTime)
|
||||
this.remoteSearchTracker = new ConcurrentHashMap<String, TreeSet<Long>>();
|
||||
this.localSearches = new ArrayList<plasmaSearchQuery>(); // contains search result properties as HashMaps
|
||||
this.remoteSearches = new ArrayList<plasmaSearchQuery>();
|
||||
this.localSearches = new ArrayList<Query>(); // contains search result properties as HashMaps
|
||||
this.remoteSearches = new ArrayList<Query>();
|
||||
|
||||
// init messages: clean up message symbol
|
||||
final File notifierSource = new File(getRootPath(), getConfig(plasmaSwitchboardConstants.HTROOT_PATH, plasmaSwitchboardConstants.HTROOT_PATH_DEFAULT) + "/env/grafics/empty.gif");
|
||||
|
@ -1019,7 +1020,7 @@ public final class plasmaSwitchboard extends serverAbstractSwitch<IndexingStack.
|
|||
|
||||
public plasmaSearchRankingProfile getRanking() {
|
||||
return (getConfig("rankingProfile", "").length() == 0) ?
|
||||
new plasmaSearchRankingProfile(plasmaSearchQuery.CONTENTDOM_TEXT) :
|
||||
new plasmaSearchRankingProfile(Query.CONTENTDOM_TEXT) :
|
||||
new plasmaSearchRankingProfile("", crypt.simpleDecode(sb.getConfig("rankingProfile", ""), null));
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package de.anomic.plasma;
|
||||
package de.anomic.search;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
@ -32,13 +32,14 @@ import de.anomic.kelondro.order.Base64Order;
|
|||
import de.anomic.kelondro.order.Bitfield;
|
||||
import de.anomic.kelondro.order.NaturalOrder;
|
||||
import de.anomic.kelondro.util.SetTools;
|
||||
import de.anomic.plasma.plasmaSearchRankingProfile;
|
||||
import de.anomic.plasma.parser.Word;
|
||||
import de.anomic.plasma.parser.Condenser;
|
||||
import de.anomic.yacy.yacySeed;
|
||||
import de.anomic.yacy.yacySeedDB;
|
||||
import de.anomic.yacy.yacyURL;
|
||||
|
||||
public final class plasmaSearchQuery {
|
||||
public final class Query {
|
||||
|
||||
public static final int SEARCHDOM_LOCAL = 0;
|
||||
public static final int SEARCHDOM_CLUSTERDHT = 1;
|
||||
|
@ -82,7 +83,7 @@ public final class plasmaSearchQuery {
|
|||
public long searchtime, urlretrievaltime, snippetcomputationtime; // time to perform the search, to get all the urls, and to compute the snippets
|
||||
public boolean specialRights; // is true if the user has a special authorization and my use more database-extensive options
|
||||
|
||||
public plasmaSearchQuery(final String queryString,
|
||||
public Query(final String queryString,
|
||||
final int lines,
|
||||
final plasmaSearchRankingProfile ranking,
|
||||
final Bitfield constraint) {
|
||||
|
@ -121,7 +122,7 @@ public final class plasmaSearchQuery {
|
|||
this.navigators = "all";
|
||||
}
|
||||
|
||||
public plasmaSearchQuery(
|
||||
public Query(
|
||||
final String queryString, final TreeSet<byte[]> queryHashes,
|
||||
final TreeSet<byte[]> excludeHashes,
|
||||
final TreeSet<byte[]> fullqueryHashes,
|
||||
|
@ -348,7 +349,7 @@ public final class plasmaSearchQuery {
|
|||
* @param addToQuery
|
||||
* @return
|
||||
*/
|
||||
public static String navurl(String ext, final int page, final int display, final plasmaSearchQuery theQuery, final String originalUrlMask, String addToQuery, String nav) {
|
||||
public static String navurl(String ext, final int page, final int display, final Query theQuery, final String originalUrlMask, String addToQuery, String nav) {
|
||||
return
|
||||
"/yacysearch." + ext + "?display=" + display +
|
||||
"&search=" + theQuery.queryString(true) + ((addToQuery == null) ? "" : "+" + addToQuery) +
|
|
@ -37,9 +37,9 @@ import de.anomic.kelondro.order.Bitfield;
|
|||
import de.anomic.kelondro.text.Segment;
|
||||
import de.anomic.kelondro.util.ScoreCluster;
|
||||
import de.anomic.kelondro.util.Log;
|
||||
import de.anomic.plasma.plasmaSearchQuery;
|
||||
import de.anomic.plasma.plasmaSearchRankingProcess;
|
||||
import de.anomic.plasma.plasmaSearchRankingProfile;
|
||||
import de.anomic.search.Query;
|
||||
import de.anomic.yacy.dht.PeerSelection;
|
||||
|
||||
public class yacySearch extends Thread {
|
||||
|
@ -270,7 +270,7 @@ public class yacySearch extends Thread {
|
|||
(clusterselection == null) ?
|
||||
selectSearchTargets(
|
||||
peers,
|
||||
plasmaSearchQuery.hashes2Set(wordhashes),
|
||||
Query.hashes2Set(wordhashes),
|
||||
targets,
|
||||
peers.redundancy())
|
||||
: selectClusterPeers(peers, clusterselection);
|
||||
|
|
Loading…
Reference in New Issue
Block a user