From 0fa6036254da751e0e38f77c20a419124b8af800 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 23 May 2018 13:08:47 +0200 Subject: Revert "Bratseth/iterate over indexes not fields" --- .../main/java/com/yahoo/prelude/IndexFacts.java | 16 +-- .../java/com/yahoo/prelude/SearchDefinition.java | 2 +- .../com/yahoo/prelude/logging/AccessLogEntry.java | 4 +- .../querytransform/CollapsePhraseSearcher.java | 6 +- .../querytransform/IndexCombinatorSearcher.java | 7 +- .../prelude/querytransform/NoRankingSearcher.java | 6 +- .../querytransform/NonPhrasingSearcher.java | 16 ++- .../querytransform/NormalizingSearcher.java | 3 +- .../prelude/querytransform/PhraseMatcher.java | 8 +- .../prelude/querytransform/PhrasingSearcher.java | 2 +- .../prelude/querytransform/RecallSearcher.java | 2 +- .../prelude/searcher/DocumentSourceSearcher.java | 10 +- .../prelude/searcher/FieldCollapsingSearcher.java | 12 +-- .../yahoo/prelude/searcher/JSONDebugSearcher.java | 6 +- .../yahoo/prelude/searcher/JuniperSearcher.java | 108 ++++++++++++--------- .../prelude/searcher/MultipleResultsSearcher.java | 2 +- .../com/yahoo/prelude/searcher/PosSearcher.java | 24 ++--- .../prelude/searcher/QuerySnapshotSearcher.java | 9 +- .../prelude/searcher/QueryValidatingSearcher.java | 4 +- .../yahoo/prelude/searcher/QuotingSearcher.java | 88 ++++++++++------- .../searcher/ValidatePredicateSearcher.java | 3 +- .../prelude/statistics/StatisticsSearcher.java | 4 +- .../java/com/yahoo/prelude/templates/Context.java | 3 - .../yahoo/prelude/templates/FormattingOptions.java | 3 - .../com/yahoo/prelude/templates/HitContext.java | 3 - .../com/yahoo/prelude/templates/MapContext.java | 7 +- .../yahoo/prelude/templates/PageTemplateSet.java | 3 - .../prelude/templates/SearchRendererAdaptor.java | 2 - .../java/com/yahoo/prelude/templates/Template.java | 6 +- .../yahoo/prelude/templates/TiledTemplateSet.java | 3 - 30 files changed, 178 insertions(+), 194 deletions(-) (limited to 'container-search/src/main/java/com/yahoo/prelude') diff --git a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java index bdf395c1f0b..b899f690ee1 100644 --- a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java +++ b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java @@ -166,8 +166,8 @@ public class IndexFacts { } private Index getIndexFromDocumentTypes(String indexName, List documentTypes) { - if (indexName == null || indexName.isEmpty()) - indexName = "default"; + if (indexName==null || indexName.isEmpty()) + indexName="default"; return getIndexByCanonicNameFromDocumentTypes(indexName, documentTypes); } @@ -191,13 +191,6 @@ public class IndexFacts { return Index.nullIndex; } - private Collection getIndexes(String documentType) { - if ( ! isInitialized()) return Collections.emptyList(); - SearchDefinition sd = searchDefinitions.get(documentType); - if (sd == null) return Collections.emptyList(); - return sd.indices().values(); - } - /** Calls resolveDocumentTypes(query.getModel().getSources(), query.getModel().getRestrict()) */ private Set resolveDocumentTypes(Query query) { // Assumption: Search definition name equals document name. @@ -428,11 +421,6 @@ public class IndexFacts { return IndexFacts.this.getIndexFromDocumentTypes(indexName, Collections.singletonList(documentType)); } - /** Returns all the indexes of a given search definition */ - public Collection getIndexes(String documentType) { - return IndexFacts.this.getIndexes(documentType); - } - /** * Returns the canonical form of the index name (Which may be the same as * the input). diff --git a/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java b/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java index 47becde7b19..644cacfa322 100644 --- a/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java +++ b/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java @@ -83,7 +83,7 @@ public class SearchDefinition { } /** Returns the indices of this as a map */ - public Map indices() { + public Map indices() { return indices; } diff --git a/container-search/src/main/java/com/yahoo/prelude/logging/AccessLogEntry.java b/container-search/src/main/java/com/yahoo/prelude/logging/AccessLogEntry.java index 9d852c8822d..e38c30c25ac 100644 --- a/container-search/src/main/java/com/yahoo/prelude/logging/AccessLogEntry.java +++ b/container-search/src/main/java/com/yahoo/prelude/logging/AccessLogEntry.java @@ -4,10 +4,8 @@ package com.yahoo.prelude.logging; /** * Hollow compatibility class for com.yahoo.container.logging.AccessLogEntry. * - * @author Steinar Knutsen - * @deprecated do not use + * @author Steinar Knutsen */ -@Deprecated // TODO: Remove on Vespa 7 public class AccessLogEntry extends com.yahoo.container.logging.AccessLogEntry { public AccessLogEntry() { diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java index 47e5651f64c..abf37c71b76 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java @@ -15,11 +15,9 @@ import com.yahoo.search.searchchain.Execution; /** * Make single item phrases in query into single word items. * - * @author Steinar Knutsen + * @author Steinar Knutsen */ public class CollapsePhraseSearcher extends Searcher { - - @Override public Result search(Query query, Execution execution) { QueryTree tree = query.getModel().getQueryTree(); Item root = tree.getRoot(); @@ -37,6 +35,7 @@ public class CollapsePhraseSearcher extends Searcher { return execution.search(query); } + private Item simplifyPhrases(Item root) { if (root == null) { return root; @@ -65,5 +64,4 @@ public class CollapsePhraseSearcher extends Searcher { else return root; } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java index dd8f4eff666..3d803b322ca 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java @@ -22,15 +22,14 @@ import java.util.*; * Searcher to rewrite queries to achieve mixed recall between indices and * memory attributes. * - * @author Steinar Knutsen - * @deprecated do not use + * @author Steinar Knutsen */ @After({PhaseNames.RAW_QUERY, PHRASE_REPLACEMENT}) @Before(PhaseNames.TRANSFORMED_QUERY) @Provides(IndexCombinatorSearcher.MIXED_RECALL_REWRITE) -@Deprecated // TODO: Remove on Vespa 7 (not necessary any more) +// TODO: This is not necessary on Vespa 6, we should probably remove it from the default chain but keep it +// around until Vespa 6 to avoid breaking those who refer to it. public class IndexCombinatorSearcher extends Searcher { - public static final String MIXED_RECALL_REWRITE = "MixedRecallRewrite"; private static class ArrayComparator implements Comparator { diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java index 7456f33d00f..72c38448936 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java @@ -1,16 +1,16 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.prelude.querytransform; + import java.util.List; import com.yahoo.component.chain.dependencies.After; import com.yahoo.component.chain.dependencies.Before; -import com.yahoo.search.Query; -import com.yahoo.search.Result; import com.yahoo.search.Searcher; import com.yahoo.search.query.Sorting.FieldOrder; import com.yahoo.search.searchchain.Execution; + /** * Avoid doing relevance calculations if sorting only * on attributes. @@ -25,7 +25,7 @@ public class NoRankingSearcher extends Searcher { private static final String UNRANKED = "unranked"; @Override - public Result search(Query query, Execution execution) { + public com.yahoo.search.Result search(com.yahoo.search.Query query, Execution execution) { List s = (query.getRanking().getSorting() != null) ? query.getRanking().getSorting().fieldOrders() : null; if (s == null) { return execution.search(query); diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java index ffb1b8a4965..7a548acbff7 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java @@ -5,8 +5,6 @@ import com.yahoo.component.ComponentId; import com.yahoo.component.chain.dependencies.After; import com.yahoo.component.chain.dependencies.Before; import com.yahoo.container.QrSearchersConfig; -import com.yahoo.search.Query; -import com.yahoo.search.Result; import com.yahoo.search.Searcher; import com.yahoo.processing.request.CompoundName; import com.yahoo.search.searchchain.Execution; @@ -14,7 +12,7 @@ import com.yahoo.search.searchchain.Execution; import java.util.List; /** - * Detects and removes certain phrases from the query. + *

Detects and removes certain phrases from the query.

* * @author bratseth */ @@ -54,9 +52,9 @@ public class NonPhrasingSearcher extends Searcher { } @Override - public Result search(Query query, Execution execution) { - List phrases = phraseMatcher.matchPhrases(query.getModel().getQueryTree().getRoot()); - if (phrases != null && !query.properties().getBoolean(suggestonly, false)) { + public com.yahoo.search.Result search(com.yahoo.search.Query query, Execution execution) { + List phrases=phraseMatcher.matchPhrases(query.getModel().getQueryTree().getRoot()); + if (phrases!=null && !query.properties().getBoolean(suggestonly, false)) { remove(phrases); query.trace("Removing stop words",true,2); } @@ -66,9 +64,9 @@ public class NonPhrasingSearcher extends Searcher { private void remove(List phrases) { // Removing the leaf replace phrases first to preserve // the start index of each replace phrase until removing - for (int i = phrases.size()-1; i >= 0; i-- ) { - PhraseMatcher.Phrase phrase = phrases.get(i); - if (phrase.getLength() < phrase.getOwner().getItemCount()) // Don't removeField all + for (int i=phrases.size()-1; i>=0; i-- ) { + PhraseMatcher.Phrase phrase= phrases.get(i); + if (phrase.getLength()all phrases */ - private boolean matchAll = false; + private boolean matchAll =false; /** For null subclass only */ private PhraseMatcher() { diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java index 2f3f4dbd351..d530ec6b45e 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java @@ -29,7 +29,7 @@ import java.util.List; @Provides(PhrasingSearcher.PHRASE_REPLACEMENT) public class PhrasingSearcher extends Searcher { - private static final CompoundName suggestonly = new CompoundName("suggestonly"); + private static final CompoundName suggestonly=new CompoundName("suggestonly"); public static final String PHRASE_REPLACEMENT = "PhraseReplacement"; diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java index 69331a196a2..4490d3c9b1e 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java @@ -38,7 +38,7 @@ public class RecallSearcher extends Searcher { private static final CompoundName recallName=new CompoundName("recall"); @Override - public Result search(Query query, Execution execution) { + public com.yahoo.search.Result search(Query query, Execution execution) { String recall = query.properties().getString(recallName); if (recall == null) return execution.search(query); diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/DocumentSourceSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/DocumentSourceSearcher.java index 2f9e81c1607..415ebd7871c 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/DocumentSourceSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/DocumentSourceSearcher.java @@ -27,12 +27,9 @@ import java.util.Set; * will be returned when attribute prefetch filling is requested.

* * @author bratseth - * @deprecated use {@link com.yahoo.search.searchchain.testutil.DocumentSourceSearcher} */ @SuppressWarnings({"rawtypes"}) -@Deprecated // TODO: Remove on Vespa 7 public class DocumentSourceSearcher extends Searcher { - // as for the SuppressWarnings annotation above, we are inside // com.yahoo.prelude, this is old stuff, really no point firing off those // warnings here... @@ -41,6 +38,7 @@ public class DocumentSourceSearcher extends Searcher { private Map completelyFilledResults = new HashMap<>(); private Map attributeFilledResults = new HashMap<>(); private Map unFilledResults = new HashMap<>(); + //private Result defaultUnfilledResult; /** Time (in ms) at which the index of this searcher was last modified */ long editionTimeStamp=0; @@ -103,11 +101,11 @@ public class DocumentSourceSearcher extends Searcher { } /** - * Returns a query clone which has source, offset and hits set to null. This is used by access to + * Returns a query clone which has offset and hits set to null. This is used by access to * the maps using the query as key to achieve lookup independent of offset/hits value */ - private Query getQueryKeyClone(Query query) { - Query key = query.clone(); + private com.yahoo.search.Query getQueryKeyClone(com.yahoo.search.Query query) { + com.yahoo.search.Query key=query.clone(); key.setWindow(0,0); key.getModel().setSources(""); return key; diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java index 21fa8962da4..71e54c810c2 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java @@ -19,9 +19,10 @@ import java.util.Map; /** - * A searcher which does parametrized collapsing. + * A searcher which does parametrized collapsing. Based on + * SiteCollapsingSearcher. Deprecated - use grouping. * - * @author Steinar Knutsen + * @author Steinar Knutsen */ @SuppressWarnings("deprecation") @After(PhaseNames.RAW_QUERY) @@ -173,18 +174,17 @@ public class FieldCollapsingSearcher extends Searcher { } if (knownCollapses.containsKey(collapseId)) { - int numHitsThisField = knownCollapses.get(collapseId); + int numHitsThisField = knownCollapses.get(collapseId).intValue(); if (numHitsThisField < collapseSize) { result.hits().add(hit); ++numHitsThisField; - knownCollapses.put(collapseId, numHitsThisField); + knownCollapses.put(collapseId, Integer.valueOf(numHitsThisField)); } } else { - knownCollapses.put(collapseId, 1); + knownCollapses.put(collapseId, Integer.valueOf(1)); result.hits().add(hit); } } } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java index 2330ca2382a..c18f3d49da3 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java @@ -16,17 +16,16 @@ import java.util.Iterator; /** * Save the query in the incoming state to a meta hit in the result. * - * @author Steinar Knutsen + * @author Steinar Knutsen */ -public class JSONDebugSearcher extends Searcher { +public class JSONDebugSearcher extends Searcher { public static final String JSON_FIELD = "JSON field: "; public static final String STRUCT_FIELD = "Structured data field (as json): "; public static final String FEATURE_FIELD = "Feature data field (as json): "; private static CompoundName PROPERTYNAME = new CompoundName("dumpjson"); - @Override public Result search(com.yahoo.search.Query query, Execution execution) { Result r = execution.search(query); String propertyName = query.properties().getString(PROPERTYNAME); @@ -54,5 +53,4 @@ public class JSONDebugSearcher extends Searcher { } return r; } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java index 5c56379efc0..ca87c0c1d46 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java @@ -78,13 +78,13 @@ public class JuniperSearcher extends Searcher { @Override public void fill(Result result, String summaryClass, Execution execution) { Result workResult = result; - int worstCase = workResult.getHitCount(); - List hits = new ArrayList<>(worstCase); - for (Iterator i = workResult.hits().deepIterator(); i.hasNext();) { - Hit sniffHit = i.next(); + final int worstCase = workResult.getHitCount(); + final List hits = new ArrayList<>(worstCase); + for (final Iterator i = workResult.hits().deepIterator(); i.hasNext();) { + final Hit sniffHit = i.next(); if ( ! (sniffHit instanceof FastHit)) continue; - FastHit hit = (FastHit) sniffHit; + final FastHit hit = (FastHit) sniffHit; if (hit.isFilled(summaryClass)) continue; hits.add(hit); @@ -105,46 +105,54 @@ public class JuniperSearcher extends Searcher { Object searchDefinitionField = hit.getField(MAGIC_FIELD); if (searchDefinitionField == null) continue; - - for (Index index : indexFacts.getIndexes(searchDefinitionField.toString())) { - if (index.getDynamicSummary() || index.getHighlightSummary()) { - HitField fieldValue = hit.buildHitField(index.getName(), true, true); - if (fieldValue != null) - insertTags(fieldValue, bolding, index.getDynamicSummary()); - } + String searchDefinitionName = searchDefinitionField.toString(); + + // TODO: Switch to iterate over indexes in the outer loop: + //for (Index index : indexFacts.getIndexes(searchDefinitionName())) { + // if (index.getDynamicSummary() || index.getHighlightSummary()) { + // insertTags(hit.buildHitField(index.getName(), true, true), bolding, index.getDynamicSummary()); + // } + //} + for (String fieldName : hit.fields().keySet()) { + Index index = indexFacts.getIndex(fieldName, searchDefinitionName); + if (index.getDynamicSummary() || index.getHighlightSummary()) + insertTags(hit.buildHitField(fieldName, true, true), bolding, index.getDynamicSummary()); } } } - private void insertTags(HitField oldProperty, boolean bolding, boolean dynteaser) { + private void insertTags(final HitField oldProperty, final boolean bolding, final boolean dynteaser) { boolean insideHighlight = false; - for (ListIterator i = oldProperty.listIterator(); i.hasNext();) { - FieldPart f = i.next(); - if (f instanceof SeparatorFieldPart) + for (final ListIterator i = oldProperty.listIterator(); i.hasNext();) { + final FieldPart f = i.next(); + if (f instanceof SeparatorFieldPart) { setSeparatorString(bolding, (SeparatorFieldPart) f); - if (f.isFinal()) continue; + } + if (f.isFinal()) { + continue; + } - String toQuote = f.getContent(); + final String toQuote = f.getContent(); List newFieldParts = null; int previous = 0; for (int j = 0; j < toQuote.length(); j++) { - char key = toQuote.charAt(j); + final char key = toQuote.charAt(j); switch (key) { - case RAW_HIGHLIGHT_CHAR: - newFieldParts = initFieldParts(newFieldParts); - addBolding(bolding, insideHighlight, f, toQuote, newFieldParts, previous, j); - previous = j + 1; - insideHighlight = !insideHighlight; - break; - case RAW_SEPARATOR_CHAR: - newFieldParts = initFieldParts(newFieldParts); - addSeparator(bolding, dynteaser, f, toQuote, newFieldParts, - previous, j); - previous = j + 1; - break; - default: - // no action - break; + case RAW_HIGHLIGHT_CHAR: + newFieldParts = initFieldParts(newFieldParts); + addBolding(bolding, insideHighlight, f, toQuote, newFieldParts, previous, j); + previous = j + 1; + insideHighlight = !insideHighlight; + break; + case RAW_SEPARATOR_CHAR: + newFieldParts = initFieldParts(newFieldParts); + addSeparator(bolding, dynteaser, f, toQuote, newFieldParts, + previous, j); + previous = j + 1; + break; + default: + // no action + break; } } if (previous > 0 && previous < toQuote.length()) { @@ -152,30 +160,37 @@ public class JuniperSearcher extends Searcher { } if (newFieldParts != null) { i.remove(); - for (Iterator j = newFieldParts.iterator(); j.hasNext();) { + for (final Iterator j = newFieldParts.iterator(); j.hasNext();) { i.add(j.next()); } } } } - private void setSeparatorString(boolean bolding, SeparatorFieldPart f) { - if (bolding) + private void setSeparatorString(final boolean bolding,final SeparatorFieldPart f) { + if (bolding) { f.setContent(separatorTag); - else + } else { f.setContent(ELLIPSIS); + } } - private void addSeparator(boolean bolding, boolean dynteaser, FieldPart f, String toQuote, - List newFieldParts, int previous, int j) { - if (previous != j) + private void addSeparator(final boolean bolding, final boolean dynteaser, + final FieldPart f, final String toQuote, + final List newFieldParts, final int previous, final int j) { + if (previous != j) { newFieldParts.add(new StringFieldPart(toQuote.substring(previous, j), f.isToken())); - if (dynteaser) - newFieldParts.add(bolding ? new SeparatorFieldPart(separatorTag) : new SeparatorFieldPart(ELLIPSIS)); + } + if (dynteaser) { + final FieldPart s = (bolding ? new SeparatorFieldPart(separatorTag) : new SeparatorFieldPart(ELLIPSIS)); + newFieldParts.add(s); + } } - private void addBolding(boolean bolding, boolean insideHighlight, FieldPart f, String toQuote, - List newFieldParts, int previous, int j) { + private void addBolding(final boolean bolding, + final boolean insideHighlight, final FieldPart f, + final String toQuote, final List newFieldParts, + final int previous, final int j) { if (previous != j) { newFieldParts.add(new StringFieldPart(toQuote.substring(previous, j), f.isToken())); } @@ -194,8 +209,9 @@ public class JuniperSearcher extends Searcher { } private List initFieldParts(List newFieldParts) { - if (newFieldParts == null) + if (newFieldParts == null) { newFieldParts = new ArrayList<>(); + } return newFieldParts; } diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java index 3b2fd596cfa..c47af9e32da 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java @@ -17,7 +17,7 @@ import java.util.*; * *

For each group, the desired number of hits can be specified.

* - * @author tonytv + * @author tonytv */ public class MultipleResultsSearcher extends Searcher { diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java index 43717ecf6cd..33667349397 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java @@ -34,7 +34,6 @@ import com.yahoo.prelude.Location; @Before(PhaseNames.TRANSFORMED_QUERY) @Provides(PosSearcher.POSITION_PARSING) public class PosSearcher extends Searcher { - public static final String POSITION_PARSING = "PositionParsing"; private static final CompoundName posBb = new CompoundName("pos.bb"); @@ -53,7 +52,7 @@ public class PosSearcher extends Searcher { public final static double km2deg = 1000.000 * 180.0 / (Math.PI * 6356752.0); public final static double mi2deg = 1609.344 * 180.0 / (Math.PI * 6356752.0); - @Override + public Result search(Query query, Execution execution) { String bb = query.properties().getString(posBb); String ll = query.properties().getString(posLl); @@ -93,8 +92,9 @@ public class PosSearcher extends Searcher { } } catch (IllegalArgumentException e) { - return new Result(query, ErrorMessage.createInvalidQueryParameter("Error in pos parameters: " + - Exceptions.toMessageString(e))); + // System.err.println("error: "+e); + return new Result(query, ErrorMessage.createInvalidQueryParameter( + "Error in pos parameters: " + Exceptions.toMessageString(e))); } // and finally: query.getRanking().setLocation(loc); @@ -102,8 +102,8 @@ public class PosSearcher extends Searcher { } private void handleGeoCircle(Query query, String ll, Location target) { - double ewCoord; - double nsCoord; + double ewCoord = 0; + double nsCoord = 0; try { DegreesParser parsed = new DegreesParser(ll); ewCoord = parsed.longitude; @@ -111,9 +111,9 @@ public class PosSearcher extends Searcher { } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Unable to parse lat/long string '" +ll + "'", e); } - String radius = query.properties().getString(posRadius); - double radiusdegrees; + double radiusdegrees = 0.0; + if (radius == null) { radiusdegrees = 50.0 * km2deg; } else if (radius.endsWith("km")) { @@ -133,8 +133,8 @@ public class PosSearcher extends Searcher { private void handleXyCircle(Query query, String xy, Location target) { - int xcoord; - int ycoord; + int xcoord = 0; + int ycoord = 0; // parse xy int semipos = xy.indexOf(';'); if (semipos > 0 && semipos < xy.length()) { @@ -143,9 +143,8 @@ public class PosSearcher extends Searcher { } else { throw new IllegalArgumentException("pos.xy must be in the format 'digits;digits' but was: '"+xy+"'"); } - String radius = query.properties().getString(posRadius); - int radiusUnits; + int radiusUnits = 0; if (radius == null) { radiusUnits = 5000; } else if (radius.endsWith("km")) { @@ -166,6 +165,7 @@ public class PosSearcher extends Searcher { target.setXyCircle(xcoord, ycoord, radiusUnits); } + private static void parseBoundingBox(String bb, Location target) { BoundingBoxParser parser = new BoundingBoxParser(bb); target.setBoundingBox(parser.n, parser.s, parser.e, parser.w); diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/QuerySnapshotSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/QuerySnapshotSearcher.java index 32efcde6feb..81b948682df 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/QuerySnapshotSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/QuerySnapshotSearcher.java @@ -11,20 +11,19 @@ import com.yahoo.search.searchchain.Execution; /** * Save the query in the incoming state to a meta hit in the result. * - * @author Steinar Knutsen - * @deprecated do not use + * @author Steinar Knutsen */ -@Deprecated // TODO: Remove on Vespa 7 + public class QuerySnapshotSearcher extends Searcher { public Result search(Query query, Execution execution) { Query q = query.clone(); Result r = execution.search(query); - Hit h = new Hit("meta:querysnapshot", new Relevance(Double.POSITIVE_INFINITY)); + Hit h = new Hit("meta:querysnapshot", new Relevance( + Double.POSITIVE_INFINITY)); h.setMeta(true); h.setField("query", q); r.hits().add(h); return r; } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/QueryValidatingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/QueryValidatingSearcher.java index 558521a7a8d..4e604dcd226 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/QueryValidatingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/QueryValidatingSearcher.java @@ -10,10 +10,8 @@ import com.yahoo.search.searchchain.Execution; /** * Ensures hits is 1000 or less and offset is 1000 or less. * - * @author Steinar Knutsen - * @deprecated do not use + * @author Steinar Knutsen */ -@Deprecated // TODO: Remove on Vespa 7 public class QueryValidatingSearcher extends Searcher { public Result search(Query query, Execution execution) { diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java index 5dcc533fb1f..d4cad7f1246 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java @@ -35,7 +35,6 @@ public class QuotingSearcher extends Searcher { } private static class QuoteTable { - private final int lowerUncachedBound; private final int upperUncachedBound; private final Map quoteMap; @@ -51,10 +50,12 @@ public class QuotingSearcher extends Searcher { boolean newIsEmpty = true; Map newQuoteMap = new HashMap<>(); for (Iterator i = config.character().iterator(); i.hasNext(); ) { - QrQuotetableConfig.Character character = (QrQuotetableConfig.Character)i.next(); + QrQuotetableConfig.Character character + = (QrQuotetableConfig.Character)i.next(); if (character.ordinal() > 256) { newIsEmpty = false; - newQuoteMap.put(new Character((char)character.ordinal()), character.quoting()); + newQuoteMap.put(new Character((char)character.ordinal()), + character.quoting()); newUseMap = true; if (minOrd == 0 || character.ordinal() < minOrd) minOrd = character.ordinal(); @@ -63,7 +64,8 @@ public class QuotingSearcher extends Searcher { } else { newIsEmpty = false; - newLowerTable[character.ordinal()] = character.quoting(); + newLowerTable[character.ordinal()] + = character.quoting(); } } lowerUncachedBound = minOrd; @@ -73,19 +75,22 @@ public class QuotingSearcher extends Searcher { isEmpty = newIsEmpty; lowerTable = newLowerTable; } - public String get(char c) { - if (isEmpty) return null; - + if (isEmpty) + return null; int ord = (int)c; if (ord < 256) { return lowerTable[ord]; } else { - if ((!useMap) || ord < lowerUncachedBound || ord > upperUncachedBound) + if ((!useMap) || ord < lowerUncachedBound + || ord > upperUncachedBound) + { return null; - else + } + else { return quoteMap.get(new Character(c)); + } } } public boolean isEmpty() { @@ -102,29 +107,35 @@ public class QuotingSearcher extends Searcher { Result result = execution.search(query); execution.fill(result); QuoteTable translations = getQuoteTable(); - if (translations == null || translations.isEmpty()) return result; - + if (translations == null || translations.isEmpty()) { + return result; + } for (Iterator i = result.hits().deepIterator(); i.hasNext(); ) { Hit h = i.next(); - if (h instanceof FastHit) - quoteFields((FastHit) h, translations); + if (h instanceof FastHit) { + quoteProperties((FastHit)h, translations); + } } return result; } - private void quoteFields(FastHit hit, QuoteTable translations) { - hit.forEachField((fieldName, fieldValue) -> { - if (fieldValue != null) { - Class fieldType = fieldValue.getClass(); - if (fieldType.equals(HitField.class)) - quoteField((HitField) fieldValue, translations); - else if (fieldType.equals(String.class)) - quoteField(hit, fieldName, (String) fieldValue, translations); + private void quoteProperties(FastHit hit, QuoteTable translations) { + for (Iterator i = ((Set) hit.fields().keySet()).iterator(); i.hasNext(); ) { + String propertyName = (String) i.next(); + Object entry = hit.getField(propertyName); + if (entry == null) { + continue; + } + Class propertyType = entry.getClass(); + if (propertyType.equals(HitField.class)) { + quoteField((HitField) entry, translations); + } else if (propertyType.equals(String.class)) { + quoteProperty(hit, propertyName, (String)entry, translations); } - }); + } } - private void quoteField(Hit hit, String fieldname, String toQuote, QuoteTable translations) { + private void quoteProperty(Hit hit, String fieldname, String toQuote, QuoteTable translations) { List l = translate(toQuote, translations, true); if (l != null) { HitField hf = new HitField(fieldname, toQuote); @@ -133,11 +144,13 @@ public class QuotingSearcher extends Searcher { } } + private void quoteField(HitField field, QuoteTable translations) { for (ListIterator i = field.listIterator(); i.hasNext(); ) { FieldPart f = i.next(); - if ( ! f.isFinal()) { - List newFieldParts = translate(f.getContent(), translations, f.isToken()); + if (!f.isFinal()) { + List newFieldParts = translate(f.getContent(), translations, + f.isToken()); if (newFieldParts != null) { i.remove(); for (Iterator j = newFieldParts.iterator(); j.hasNext(); ) { @@ -148,24 +161,33 @@ public class QuotingSearcher extends Searcher { } } - private List translate(String toQuote, QuoteTable translations, boolean isToken) { + private List translate(String toQuote, QuoteTable translations, + boolean isToken) { List newFieldParts = null; int lastIdx = 0; for (int i = 0; i < toQuote.length(); i++) { String quote = translations.get(toQuote.charAt(i)); if (quote != null) { - if (newFieldParts == null) + if (newFieldParts == null) { newFieldParts = new ArrayList<>(); - if (lastIdx != i) - newFieldParts.add(new StringFieldPart(toQuote.substring(lastIdx, i), isToken)); + } + if (lastIdx != i) { + newFieldParts.add( + new StringFieldPart(toQuote.substring(lastIdx, i), + isToken)); + } String initContent = Character.toString(toQuote.charAt(i)); - newFieldParts.add(new ImmutableFieldPart(initContent, quote, isToken)); + newFieldParts.add(new ImmutableFieldPart(initContent, + quote, + isToken)); lastIdx = i+1; } } - if (lastIdx > 0 && lastIdx < toQuote.length()) - newFieldParts.add(new StringFieldPart(toQuote.substring(lastIdx), isToken)); + if (lastIdx > 0 && lastIdx < toQuote.length()) { + newFieldParts.add( + new StringFieldPart(toQuote.substring(lastIdx), + isToken)); + } return newFieldParts; } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java index 9b6f5926b61..2e2c73b6707 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java @@ -20,7 +20,7 @@ import java.util.Collection; /** * Checks that predicate queries don't use values outside the defined upper/lower bounds. * - * @author Magnar Nedland + * @author Magnar Nedland */ @After(BooleanSearcher.PREDICATE) public class ValidatePredicateSearcher extends Searcher { @@ -78,5 +78,4 @@ public class ValidatePredicateSearcher extends Searcher { @Override public void onExit() {} } - } diff --git a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java index bd61de7f783..9de1a5e2a2d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java @@ -10,7 +10,6 @@ import com.yahoo.log.LogLevel; import com.yahoo.metrics.simple.MetricSettings; import com.yahoo.metrics.simple.MetricReceiver; import com.yahoo.processing.request.CompoundName; -import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.search.Searcher; import com.yahoo.search.result.Coverage; @@ -208,8 +207,7 @@ public class StatisticsSearcher extends Searcher { * 2) Add response time to total response time (time from entry to return) * 3) ..... */ - @Override - public Result search(Query query, Execution execution) { + public Result search(com.yahoo.search.Query query, Execution execution) { if (query.properties().getBoolean(IGNORE_QUERY,false)) { return execution.search(query); } diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/Context.java b/container-search/src/main/java/com/yahoo/prelude/templates/Context.java index 7989f35e77b..7a904ea014c 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/Context.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/Context.java @@ -9,10 +9,7 @@ import com.yahoo.text.XML; * A set of variable bindings for template rendering * * @author bratseth - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public abstract class Context { private boolean xmlEscape = true; diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/FormattingOptions.java b/container-search/src/main/java/com/yahoo/prelude/templates/FormattingOptions.java index dab80580f61..f14d8ddf319 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/FormattingOptions.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/FormattingOptions.java @@ -13,10 +13,7 @@ import java.util.Set; * Defines formatting options used with special kinds of hits. * * @author laboisse - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public class FormattingOptions { public static final String DEFAULT_TYPE_ATTRIBUTE_NAME = "type"; diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/HitContext.java b/container-search/src/main/java/com/yahoo/prelude/templates/HitContext.java index 4d1daa97306..037d1a77d5c 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/HitContext.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/HitContext.java @@ -17,10 +17,7 @@ import java.util.Set; * A context providing all the fields of a hit, and falls back to MapContext behavior for all other keys. * * @author tonytv - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public class HitContext extends Context { private final Hit hit; diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/MapContext.java b/container-search/src/main/java/com/yahoo/prelude/templates/MapContext.java index 84d97b71f60..49c5ffa6e78 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/MapContext.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/MapContext.java @@ -6,12 +6,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; -/** - * A context having a map as secondary storage - * @deprecated use a Renderer instead - */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 +/** A context having a map as secondary storage */ public class MapContext extends Context { private Map map = new LinkedHashMap<>(); diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java index 83118ec66ad..a24fd623e4d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java @@ -14,10 +14,7 @@ import java.io.Writer; * This is a variant of the tiled template set - see that class for details. * * @author bratseth - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public class PageTemplateSet extends TiledTemplateSet { public PageTemplateSet() { diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java b/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java index a639a6b97ec..31e133d22d5 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java @@ -21,10 +21,8 @@ import java.util.Iterator; * Renders a search result using the old templates API. * * @author tonytv - * @deprecated do not use */ @SuppressWarnings({ "rawtypes", "deprecation", "unchecked" }) -@Deprecated // TODO: Remove on Vespa 7 public final class SearchRendererAdaptor extends Renderer { private final LogExceptionUserTemplateDelegator templates; diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/Template.java b/container-search/src/main/java/com/yahoo/prelude/templates/Template.java index 3d00be9d05b..63bd3214b17 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/Template.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/Template.java @@ -10,10 +10,7 @@ import java.io.Writer; * template mechanism by subclassing this. * * @author bratseth - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public abstract class Template { /** @@ -22,7 +19,8 @@ public abstract class Template { * @param context the context to evaluate in * @param writer the writer to render to */ - public abstract void render(Context context,T writer) throws java.io.IOException; + public abstract void render(Context context,T writer) + throws java.io.IOException; /** diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java index 91bc33e3e2a..6bba0f620ee 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java @@ -70,10 +70,7 @@ import java.util.stream.Collectors; * * @author bratseth * @author laboisse - * @deprecated use a Renderer instead */ -@SuppressWarnings("deprecation") -@Deprecated // TODO: Remove on Vespa 7 public class TiledTemplateSet extends DefaultTemplateSet { private FormattingOptions hitOptionsForProvider; -- cgit v1.2.3