summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-04-13 22:26:21 +0200
committerGitHub <noreply@github.com>2018-04-13 22:26:21 +0200
commit43e081bc5f9ad70140873efba23bb4b4549937dc (patch)
tree79fe10099e460aabb7f929d9339b930632541dc5 /container-search/src/main/java/com/yahoo/prelude
parent43f61854cb785763ae19564840557a7d9e758dce (diff)
Revert "Revert "Revert "dispatch.summaries by default when possible"""
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java26
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java34
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java6
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java28
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java7
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java6
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java9
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java16
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java14
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java5
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java14
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java9
19 files changed, 82 insertions, 144 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
index 258f0dec9ff..2709755da5d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
@@ -13,7 +13,6 @@ import com.yahoo.container.handler.VipStatus;
import com.yahoo.fs4.mplex.Backend;
import com.yahoo.container.search.LegacyEmulationConfig;
import com.yahoo.net.HostName;
-import com.yahoo.prelude.fastsearch.DocsumDefinitionSet;
import com.yahoo.search.dispatch.Dispatcher;
import com.yahoo.prelude.fastsearch.FS4ResourcePool;
import com.yahoo.prelude.IndexFacts;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
index d50006fb82c..4fd0f884903 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
@@ -21,33 +21,20 @@ import java.util.Map;
*/
public class DocsumDefinition {
- private final String name;
- private final ImmutableList<DocsumField> fields;
+ private String name;
+ private final List<DocsumField> fields;
/** True if this contains dynamic fields */
- private final boolean dynamic;
+ private boolean dynamic = false;
// Mapping between field names and their index in this.fields
- private final ImmutableMap<String, Integer> fieldNameToIndex;
-
- public DocsumDefinition(String name, List<DocsumField> fields) {
- this.name = name;
- this.dynamic = false;
- this.fields = ImmutableList.copyOf(fields);
- ImmutableMap.Builder<String, Integer> fieldNameToIndexBuilder = new ImmutableMap.Builder<>();
- int i = 0;
- for (DocsumField field : fields)
- fieldNameToIndexBuilder.put(field.name, i++);
- this.fieldNameToIndex = fieldNameToIndexBuilder.build();
- }
+ private final Map<String,Integer> fieldNameToIndex;
- // TODO: Remove LegacyEmulationConfig (the config, not just the usage) on Vespa 7
DocsumDefinition(DocumentdbInfoConfig.Documentdb.Summaryclass config, LegacyEmulationConfig emulConfig) {
this.name = config.name();
-
List<DocsumField> fieldsBuilder = new ArrayList<>();
- Map<String, Integer> fieldNameToIndexBuilder = new HashMap<>();
- boolean dynamic = false;
+ Map<String,Integer> fieldNameToIndexBuilder = new HashMap<>();
+
for (DocumentdbInfoConfig.Documentdb.Summaryclass.Fields field : config.fields()) {
// no, don't switch the order of the two next lines :)
fieldNameToIndexBuilder.put(field.name(), fieldsBuilder.size());
@@ -55,7 +42,6 @@ public class DocsumDefinition {
if (field.dynamic())
dynamic = true;
}
- this.dynamic = dynamic;
fields = ImmutableList.copyOf(fieldsBuilder);
fieldNameToIndex = ImmutableMap.copyOf(fieldNameToIndexBuilder);
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
index 8bfb1035f1c..8d882adeb02 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
-import com.google.common.collect.ImmutableMap;
import com.yahoo.slime.BinaryFormat;
import com.yahoo.data.access.Inspector;
import com.yahoo.slime.Slime;
@@ -11,12 +10,9 @@ import com.yahoo.container.search.LegacyEmulationConfig;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
-import java.util.stream.Collectors;
import static com.yahoo.data.access.Type.OBJECT;
@@ -31,24 +27,17 @@ public final class DocsumDefinitionSet {
public static final int SLIME_MAGIC_ID = 0x55555555;
private final static Logger log = Logger.getLogger(DocsumDefinitionSet.class.getName());
- private final Map<String, DocsumDefinition> definitionsByName;
+ private final HashMap<String, DocsumDefinition> definitionsByName = new HashMap<>();
private final LegacyEmulationConfig emulationConfig;
public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config) {
- this(config, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder()));
+ this.emulationConfig = new LegacyEmulationConfig(new LegacyEmulationConfig.Builder());
+ configure(config);
}
public DocsumDefinitionSet(DocumentdbInfoConfig.Documentdb config, LegacyEmulationConfig emulConfig) {
- this(toDocsums(config, emulConfig), emulConfig);
- }
-
- public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions) {
- this(docsumDefinitions, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder()));
- }
-
- public DocsumDefinitionSet(Collection<DocsumDefinition> docsumDefinitions, LegacyEmulationConfig emulConfig) {
- this.definitionsByName = ImmutableMap.copyOf(docsumDefinitions.stream().collect(Collectors.toMap(DocsumDefinition::getName, p -> p)));
this.emulationConfig = emulConfig;
+ configure(config);
}
/**
@@ -117,13 +106,14 @@ public final class DocsumDefinitionSet {
return definitionsByName.size();
}
- private static Collection<DocsumDefinition> toDocsums(DocumentdbInfoConfig.Documentdb config, LegacyEmulationConfig emulConfig) {
- Collection<DocsumDefinition> docsums = new ArrayList<>();
- for (int i = 0; i < config.summaryclass().size(); ++i)
- docsums.add(new DocsumDefinition(config.summaryclass(i), emulConfig));
- if (docsums.isEmpty())
+ private void configure(DocumentdbInfoConfig.Documentdb config) {
+ for (int i = 0; i < config.summaryclass().size(); ++i) {
+ DocumentdbInfoConfig.Documentdb.Summaryclass sc = config.summaryclass(i);
+ DocsumDefinition docSumDef = new DocsumDefinition(sc, emulationConfig);
+ definitionsByName.put(sc.name(), docSumDef);
+ }
+ if (definitionsByName.size() == 0) {
log.warning("No summary classes found in DocumentdbInfoConfig.Documentdb");
- return docsums;
+ }
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
index d5e4eb75931..1e44a8fa64d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
@@ -73,8 +73,8 @@ public abstract class DocsumField {
this.name = name;
}
- /* For unit test only */
- public static DocsumField create(String name, String typename) {
+ /* for unit test only */
+ static DocsumField create(String name, String typename) {
return create(name, typename, new LegacyEmulationConfig(new LegacyEmulationConfig.Builder()));
}
@@ -114,7 +114,7 @@ public abstract class DocsumField {
/**
* Convert a generic value into an object of the appropriate type
* for this field.
- */
+ **/
public abstract Object convert(Inspector value);
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
index 0ae0983a1ae..3366f92384a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
@@ -4,13 +4,10 @@ package com.yahoo.prelude.fastsearch;
import com.google.common.collect.ImmutableMap;
import com.yahoo.container.search.LegacyEmulationConfig;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
/**
* Representation of a back-end document database.
@@ -27,16 +24,12 @@ public class DocumentDatabase {
private final String name;
private final DocsumDefinitionSet docsumDefSet;
- private final ImmutableMap<String, RankProfile> rankProfiles;
+ private final Map<String, RankProfile> rankProfiles;
public DocumentDatabase(DocumentdbInfoConfig.Documentdb documentDb, LegacyEmulationConfig emulConfig) {
- this(documentDb.name(), new DocsumDefinitionSet(documentDb, emulConfig), toRankProfiles(documentDb.rankprofile()));
- }
-
- public DocumentDatabase(String name, DocsumDefinitionSet docsumDefinitionSet, Collection<RankProfile> rankProfiles) {
- this.name = name;
- this.docsumDefSet = docsumDefinitionSet;
- this.rankProfiles = ImmutableMap.copyOf(rankProfiles.stream().collect(Collectors.toMap(RankProfile::getName, p -> p)));
+ this.name = documentDb.name();
+ this.docsumDefSet = new DocsumDefinitionSet(documentDb, emulConfig);
+ this.rankProfiles = ImmutableMap.copyOf(toRankProfiles(documentDb.rankprofile()));
}
public String getName() {
@@ -50,14 +43,11 @@ public class DocumentDatabase {
/** Returns an unmodifiable map of all the rank profiles in this indexed by rank profile name */
public Map<String, RankProfile> rankProfiles() { return rankProfiles; }
- private static ImmutableMap<String, RankProfile> toMap(Collection<RankProfile> rankProfiles) {
- return ImmutableMap.copyOf(rankProfiles.stream().collect(Collectors.toMap(RankProfile::getName, p -> p)));
- }
-
- private static Collection<RankProfile> toRankProfiles(Collection<DocumentdbInfoConfig.Documentdb.Rankprofile> rankProfileConfigList) {
- List<RankProfile> rankProfiles = new ArrayList<>();
- for (DocumentdbInfoConfig.Documentdb.Rankprofile c : rankProfileConfigList)
- rankProfiles.add(new RankProfile(c.name(), c.hasSummaryFeatures(), c.hasRankFeatures()));
+ private Map<String, RankProfile> toRankProfiles(List<DocumentdbInfoConfig.Documentdb.Rankprofile> rankProfileConfigList) {
+ Map<String, RankProfile> rankProfiles = new HashMap<>();
+ for (DocumentdbInfoConfig.Documentdb.Rankprofile c : rankProfileConfigList) {
+ rankProfiles.put(c.name(), new RankProfile(c.name(), c.hasSummaryFeatures(), c.hasRankFeatures()));
+ }
return rankProfiles;
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
index b3eaee8698a..aab8aae6025 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
@@ -74,10 +74,9 @@ public class FastHit extends Hit {
setPartId(0, 0);
}
- @Override
public String toString() {
return super.toString() + " [fasthit, globalid: " + globalId + ", partId: "
- + partId + ", distributionkey: " + distributionKey + "]";
+ + partId + ", distributionkey: " + distributionKey + "]";
}
public static String asHexString(GlobalId gid) {
@@ -268,8 +267,7 @@ public class FastHit extends Hit {
this.distributionKey = distributionKey;
}
- /** For internal use */
- public void addSummary(DocsumDefinition docsumDef, Inspector value) {
+ void addSummary(DocsumDefinition docsumDef, Inspector value) {
reserve(docsumDef.getFieldCount());
for (DocsumField field : docsumDef.getFields()) {
String fieldName = field.getName();
@@ -292,8 +290,10 @@ public class FastHit extends Hit {
* easier. This is not a method to be used for efficiency, as it causes
* object allocations.
*
- * @param fieldName the name of the field to insert undecoded UTF-8 into
- * @param value an array of valid UTF-8 data
+ * @param fieldName
+ * the name of the field to insert undecoded UTF-8 into
+ * @param value
+ * an array of valid UTF-8 data
*/
@Beta
public void setLazyStringField(String fieldName, byte[] value) {
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
index b2231fd3387..7d822fd603b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
@@ -56,9 +56,6 @@ public class FastSearcher extends VespaBackEndSearcher {
/** If this is turned on this will make search queries directly to the local search node when possible */
private final static CompoundName dispatchDirect = new CompoundName("dispatch.direct");
- /** Unless turned off this will fill summaries by dispatching directly to search nodes over RPC when possible */
- private final static CompoundName dispatchSummaries = new CompoundName("dispatch.summaries");
-
/** The compression method which will be used with rpc dispatch. "lz4" (default) and "none" is supported. */
private final static CompoundName dispatchCompression = new CompoundName("dispatch.compression");
@@ -258,11 +255,11 @@ public class FastSearcher extends VespaBackEndSearcher {
Query query = result.getQuery();
traceQuery(getName(), "fill", query, query.getOffset(), query.getHits(), 2, quotedSummaryClass(summaryClass));
- if (query.properties().getBoolean(dispatchSummaries, true) && !summaryNeedsQuery(query)) {
+ if (wantsRPCSummaryFill(query)) {
CompressionType compression =
CompressionType.valueOf(query.properties().getString(dispatchCompression, "LZ4").toUpperCase());
fillSDDocName(result);
- dispatcher.fill(result, summaryClass, getDocumentDatabase(query), compression);
+ dispatcher.fill(result, summaryClass, compression);
return;
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
index 6c73167b162..6be5a27b49b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
@@ -9,10 +9,9 @@ import com.yahoo.data.access.Inspector;
/**
- * @author Mathias Mølster Lidal
+ * @author <a href="mailto:mathiasm@yahoo-inc.com">Mathias M\u00f8lster Lidal</a>
*/
public class FloatField extends DocsumField {
-
static final double EMPTY_VALUE = Float.NaN;
public FloatField(String name) {
@@ -27,12 +26,10 @@ public class FloatField extends DocsumField {
}
}
- @Override
public Object decode(ByteBuffer b) {
return convert(b.getFloat());
}
- @Override
public Object decode(ByteBuffer b, FastHit hit) {
Object field = decode(b);
hit.setField(name, field);
@@ -49,5 +46,4 @@ public class FloatField extends DocsumField {
public Object convert(Inspector value) {
return convert((float)value.asDouble(EMPTY_VALUE));
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
index eef6fc73294..fe44597b7d7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
@@ -12,10 +12,9 @@ import com.yahoo.search.result.NanNumber;
import com.yahoo.data.access.Inspector;
/**
- * @author Bjørn Borud
+ * @author <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a>
*/
public class IntegerField extends DocsumField {
-
static final int EMPTY_VALUE = Integer.MIN_VALUE;
public IntegerField(String name) {
@@ -26,23 +25,20 @@ public class IntegerField extends DocsumField {
if (value == EMPTY_VALUE) {
return NanNumber.NaN;
} else {
- return value;
+ return Integer.valueOf(value);
}
}
- @Override
public Object decode(ByteBuffer b) {
return convert(b.getInt());
}
- @Override
public Object decode(ByteBuffer b, FastHit hit) {
Object field = decode(b);
hit.setField(name, field);
return field;
}
- @Override
public String toString() {
return "field " + getName() + " type int";
}
@@ -57,5 +53,4 @@ public class IntegerField extends DocsumField {
public Object convert(Inspector value) {
return convert((int)value.asLong(EMPTY_VALUE));
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
index 9d22168485c..08cd4ddff35 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
@@ -86,5 +86,4 @@ public class LongdataField extends DocsumField implements VariableLengthField {
public Object convert(Inspector value) {
return convert(value.asData(Value.empty().asData()));
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
index e5c9f048e53..eac1579a821 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
@@ -55,6 +55,8 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
private static final CompoundName grouping=new CompoundName("grouping");
private static final CompoundName combinerows=new CompoundName("combinerows");
+ /** If this is turned on this will fill summaries by dispatching directly to search nodes over RPC */
+ private final static CompoundName dispatchSummaries = new CompoundName("dispatch.summaries");
protected static final CompoundName PACKET_COMPRESSION_LIMIT = new CompoundName("packetcompressionlimit");
protected static final CompoundName PACKET_COMPRESSION_TYPE = new CompoundName("packetcompressiontype");
@@ -108,6 +110,10 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
protected abstract void doPartialFill(Result result, String summaryClass);
+ protected static boolean wantsRPCSummaryFill(Query query) {
+ return query.properties().getBoolean(dispatchSummaries);
+ }
+
/**
* Returns whether we need to send the query when fetching summaries.
* This is necessary if the query requests summary features or dynamic snippeting
@@ -210,6 +216,12 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
return new Result(query, ErrorMessage.createNullQuery(query.getHttpRequest().getUri().toString()));
}
+ if (wantsRPCSummaryFill(query) && summaryNeedsQuery(query)) {
+ return new Result(query, ErrorMessage.createInvalidQueryParameter(
+ "When using dispatch.summaries and your summary/rankprofile require the query, " +
+ " you need to enable ranking.queryCache."));
+ }
+
QueryRewrite.optimizeByRestrict(query);
QueryRewrite.optimizeAndNot(query);
QueryRewrite.collapseSingleComposites(query);
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
index 6ca5feb610f..df8f6e92d57 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
@@ -4,13 +4,11 @@ package com.yahoo.prelude.hitfield;
/**
* Represents an element of a hit property
*
- * @author Steinar Knutsen
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public interface FieldPart {
-
- boolean isFinal();
- boolean isToken();
- String getContent();
- String toString();
-
+ public abstract boolean isFinal();
+ public abstract boolean isToken();
+ public abstract String getContent();
+ public abstract String toString();
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
index 79d871d8c74..770ac24dcab 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
@@ -10,10 +10,11 @@ import com.yahoo.prelude.searcher.JuniperSearcher;
import com.yahoo.text.XML;
/**
- * Represents a tokenized string field in a Hit. The original raw content and the field
- * name cannot be modified. But the tokenized version can be retrieved and set.
+ * Represents a Field in a Hit. The original raw content and the field
+ * name cannot be modified. But the tokenized version can be retrieved
+ * and set.
*
- * @author Lars Christian Jensen
+ * @author <a href="mailto:larschr@yahoo-inc.com">Lars Christian Jensen</a>
*/
public class HitField {
@@ -344,7 +345,10 @@ public class HitField {
return xml.toString();
}
- /** Returns the content of this field, using the arguments as bolding tags, as an XML string */
+ /**
+ * @return the content of this field, using the arguments as bolding
+ * tags, as an XML string
+ */
public String quotedContent(String boldOpenTag,
String boldCloseTag,
String separatorTag,
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
index 268e1b53459..fa0ca62405f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
@@ -2,12 +2,12 @@
package com.yahoo.prelude.hitfield;
/**
- * Represents an element of a hit property which is an immutable string element
+ * Represents an element of a hit property which is a possibly
+ * mutable string element
*
- * @author Steinar Knutsen
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public class ImmutableFieldPart implements FieldPart {
-
private final String content;
private final String initContent;
// Whether this element represents a (part of) a token or a
@@ -15,12 +15,10 @@ public class ImmutableFieldPart implements FieldPart {
// parts should inherit this state from the object they were
// split from.
private boolean tokenOrDelimiter;
-
public ImmutableFieldPart(String initContent,
boolean tokenOrDelimiter) {
this(initContent, initContent, tokenOrDelimiter);
}
-
public ImmutableFieldPart(String initContent,
String content,
boolean tokenOrDelimiter) {
@@ -29,17 +27,9 @@ public class ImmutableFieldPart implements FieldPart {
this.content = content;
this.tokenOrDelimiter = tokenOrDelimiter;
}
-
- @Override
public boolean isFinal() { return true; }
- @Override
public boolean isToken() { return tokenOrDelimiter; }
- @Override
public String getContent() { return content; }
-
public String getInitContent() { return initContent; }
-
- @Override
public String toString() { return content; }
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
index 06db012309e..bdd7cf04c3e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
@@ -19,7 +19,7 @@ import java.util.Iterator;
/**
* A JSON wrapper. Contains XML-style rendering of a JSON structure.
*
- * @author Steinar Knutsen
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public class JSONString implements Inspectable {
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
index 17def6771ae..23ca8272851 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
@@ -4,31 +4,19 @@ package com.yahoo.prelude.hitfield;
/**
* Represents an element of a hit property which is markup, not content.
*
- * @author Steinar Knutsen
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public class MarkupFieldPart implements FieldPart {
-
private String content;
-
public MarkupFieldPart(String content) {
this.content = content;
}
-
- @Override
public boolean isFinal() { return true; }
-
// Markup is never part of tokens as such
- @Override
public boolean isToken() { return false; }
-
public void setContent(String content) {
this.content = content;
}
-
- @Override
public String getContent() { return content; }
-
- @Override
public String toString() { return content; }
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
index a0c9b10c519..dbbbca63d43 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
@@ -6,8 +6,8 @@ package com.yahoo.prelude.hitfield;
*
* @author arnej27959
*/
-public final class RawData {
-
+public final class RawData
+{
private byte[] content;
/**
@@ -52,5 +52,4 @@ public final class RawData {
}
return buf.toString();
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
index 58018305fef..d7607fb7100 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
@@ -5,10 +5,9 @@ package com.yahoo.prelude.hitfield;
* Represents an element of a hit property which is a possibly
* mutable string element
*
- * @author Steinar Knutsen
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public class StringFieldPart implements FieldPart {
-
private String content;
private final String initContent;
// Whether this element represents a (part of) a token or a
@@ -16,28 +15,17 @@ public class StringFieldPart implements FieldPart {
// parts should inherit this state from the object they were
// split from.
private boolean tokenOrDelimiter;
-
public StringFieldPart(String content, boolean tokenOrDelimiter) {
this.content = content;
initContent = content;
this.tokenOrDelimiter = tokenOrDelimiter;
}
-
- @Override
public boolean isFinal() { return false; }
-
- @Override
public boolean isToken() { return tokenOrDelimiter; }
-
- @Override
public String getContent() { return content; }
-
public void setContent(String content) {
this.content = content;
}
public String getInitContent() { return initContent; }
-
- @Override
public String toString() { return content; }
-
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
index 99c5daa05b8..8bafbfd6ab5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
@@ -1,14 +1,21 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
+import com.yahoo.text.Utf8;
import com.yahoo.text.XML;
import com.yahoo.data.access.Inspector;
+import com.yahoo.data.access.Inspectable;
import com.yahoo.data.access.Type;
+import com.yahoo.data.access.simple.Value;
+import com.yahoo.data.access.slime.SlimeAdapter;
+import java.nio.charset.StandardCharsets;
+
+import java.util.Iterator;
import java.util.Map;
/**
* Utility class for converting accessible data into the historical "prelude" xml format.
- */
+ **/
public class XmlRenderer {
public static StringBuilder render(StringBuilder target, Inspector value) {