Revision: 3554 http://archive-access.svn.sourceforge.net/archive-access/?rev=3554&view=rev Author: bradtofel Date: 2011-11-16 22:02:07 +0000 (Wed, 16 Nov 2011) Log Message: ----------- OPTIMIZ: adding hard-stop end-date filter, to help speed up completion when scanning a single SearchResultSource holding multiple logical collections Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java 2011-10-31 20:49:36 UTC (rev 3553) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java 2011-11-16 22:02:07 UTC (rev 3554) @@ -31,6 +31,7 @@ import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.resourceindex.filters.DateRangeFilter; +import org.archive.wayback.resourceindex.filters.EndDateFilter; import org.archive.wayback.resourceindex.filters.HostMatchFilter; import org.archive.wayback.resourceindex.filters.SchemeMatchFilter; import org.archive.wayback.resourceindex.filters.SelfRedirectFilter; @@ -70,6 +71,15 @@ throw new BadQueryException("Bad request URL(" + request.getRequestUrl() +")"); } + // Date-Filters: + startDate = request.getStartTimestamp(); + if(startDate == null) { + startDate = Timestamp.earliestTimestamp().getDateStr(); + } + endDate = request.getEndTimestamp(); + if(endDate == null) { + endDate = Timestamp.latestTimestamp().getDateStr(); + } if(request.isReplayRequest()) { exactDate = request.getReplayTimestamp(); if(exactDate == null) { @@ -90,20 +100,17 @@ } else if(request.isCaptureQueryRequest()) { chain.addFilter(new UrlMatchFilter(keyUrl)); + // OPTIMIZ: EndDateFilter is a hard stop: ABORT + // DateRangeFilter is an INCLUDE/EXCLUDE + // one class which EXCLUDEs before startDate, and ABORTs + // after endDate would save a compare.. + chain.addFilter(new EndDateFilter(endDate)); + chain.addFilter(new DateRangeFilter(startDate, endDate)); } else if(request.isUrlQueryRequest()) { chain.addFilter(new UrlPrefixMatchFilter(keyUrl)); + chain.addFilter(new DateRangeFilter(startDate, endDate)); } - // Date-Filters: - startDate = request.getStartTimestamp(); - if(startDate == null) { - startDate = Timestamp.earliestTimestamp().getDateStr(); - } - endDate = request.getEndTimestamp(); - if(endDate == null) { - endDate = Timestamp.latestTimestamp().getDateStr(); - } - chain.addFilter(new DateRangeFilter(startDate, endDate)); // Other Filters: if(request.isExactHost()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |