summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp15
-rw-r--r--searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp33
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h5
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp187
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h1
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfilter.cpp41
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfilter.h5
12 files changed, 36 insertions, 273 deletions
diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp
index 3e41873f083..bffc9f9b772 100644
--- a/searchcore/src/tests/proton/docsummary/docsummary.cpp
+++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp
@@ -377,7 +377,7 @@ public:
GeneralResultPtr
Test::getResult(DocumentStoreAdapter & dsa, uint32_t docId)
{
- DocsumStoreValue docsum = dsa.getMappedDocsum(docId, true);
+ DocsumStoreValue docsum = dsa.getMappedDocsum(docId);
ASSERT_TRUE(docsum.pt() != NULL);
GeneralResultPtr retval(new GeneralResult(dsa.getResultClass(),
0, 0, 0));
@@ -573,7 +573,7 @@ Test::requireThatAdapterHandlesMultipleDocuments()
EXPECT_EQUAL(2000u, res->GetEntry("a")->_intval);
}
{ // doc 2
- DocsumStoreValue docsum = dsa.getMappedDocsum(2, true);
+ DocsumStoreValue docsum = dsa.getMappedDocsum(2);
EXPECT_TRUE(docsum.pt() == NULL);
}
{ // doc 0 (again)
@@ -663,10 +663,10 @@ Test::requireThatDocsumRequestIsProcessed()
EXPECT_EQUAL(3u, rep->docsums.size());
EXPECT_EQUAL(2u, rep->docsums[0].docid);
EXPECT_EQUAL(gid2, rep->docsums[0].gid);
- EXPECT_TRUE(assertSlime("{a:20}", *rep, 0, true));
+ EXPECT_TRUE(assertSlime("{a:20}", *rep, 0, false));
EXPECT_EQUAL(4u, rep->docsums[1].docid);
EXPECT_EQUAL(gid4, rep->docsums[1].gid);
- EXPECT_TRUE(assertSlime("{a:40}", *rep, 1, true));
+ EXPECT_TRUE(assertSlime("{a:40}", *rep, 1, false));
EXPECT_EQUAL(search::endDocId, rep->docsums[2].docid);
EXPECT_EQUAL(gid9, rep->docsums[2].gid);
EXPECT_TRUE(rep->docsums[2].data.get() == NULL);
@@ -698,7 +698,7 @@ Test::requireThatRewritersAreUsed()
req.hits.push_back(DocsumRequest::Hit(gid1));
DocsumReply::UP rep = dc._ddb->getDocsums(req);
EXPECT_EQUAL(1u, rep->docsums.size());
- EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, true));
+ EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, false));
}
@@ -828,7 +828,7 @@ Test::requireThatAttributesAreUsed()
"bf:[],"
"bg:[],"
"bh:[],"
- "bi:[]}", *rep, 1, true));
+ "bi:[]}", *rep, 1, false));
TEST_DO(assertTensor(Tensor::UP(), "bj", *rep, 1, rclass));
proton::IAttributeManager::SP attributeManager =
@@ -1173,7 +1173,8 @@ Test::requireThatPositionsAreUsed()
"<position x=\"1008\" y=\"1009\" latlong=\"N0.001009;E0.001008\" />'"
",wp2:[{item:1048370,weight:43},{item:1048382,weight:44}]"
",wp2x:'<position x=\"1012\" y=\"1013\" latlong=\"N0.001013;E0.001012\" />"
- "<position x=\"1014\" y=\"1015\" latlong=\"N0.001015;E0.001014\" />'}", *rep, 0, true));
+ "<position x=\"1014\" y=\"1015\" latlong=\"N0.001015;E0.001014\" />'}",
+ *rep, 0, false));
}
diff --git a/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp b/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
index 113113af195..5159f5b6061 100644
--- a/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
+++ b/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
@@ -432,7 +432,7 @@ T
Test::cvtSummaryAs(bool markup, const FieldValue::UP &fv)
{
ASSERT_TRUE(fv.get() != NULL);
- FieldValue::UP r = SFC::convertSummaryField(markup, *fv, false);
+ FieldValue::UP r = SFC::convertSummaryField(markup, *fv);
return cvtValueAs<T>(r);
}
@@ -487,8 +487,7 @@ void Test::requireThatSummaryIsAnUnmodifiedString() {
setSummaryField("string");
Document summary = makeDocument();
checkString("Foo Bar Baz", SFC::convertSummaryField(false,
- *summary.getValue("string"),
- false).get());
+ *summary.getValue("string")).get());
}
void Test::requireThatAttributeIsAnUnmodifiedString() {
@@ -502,28 +501,18 @@ void Test::requireThatArrayIsFlattenedInSummaryField() {
setSummaryField("string_array");
Document summary = makeDocument();
FieldBlock expect("[\"\\\"foO\\\"\",\"ba\\\\R\"]");
- checkString(expect.json,
- SFC::convertSummaryField(false,
- *summary.getValue("string_array"),
- false).get());
checkData(expect.binary,
SFC::convertSummaryField(false,
- *summary.getValue("string_array"),
- true).get());
+ *summary.getValue("string_array")).get());
}
void Test::requireThatWeightedSetIsFlattenedInSummaryField() {
setSummaryField("string_wset");
Document summary = makeDocument();
FieldBlock expect("[{\"item\":\"\\\"foo\\\"\",\"weight\":2},{\"item\":\"ba\\\\r\",\"weight\":4}]");
- checkString(expect.json,
- SFC::convertSummaryField(false,
- *summary.getValue("string_wset"),
- false).get());
checkData(expect.binary,
SFC::convertSummaryField(false,
- *summary.getValue("string_wset"),
- true).get());
+ *summary.getValue("string_wset")).get());
}
void Test::requireThatPositionsAreTransformedInSummary() {
@@ -672,7 +661,7 @@ Test::requireThatPredicateIsPrinted()
doc.setValue("predicate", PredicateFieldValue(std::move(input)));
checkString("'foo' in ['bar']\n",
- SFC::convertSummaryField(false, *doc.getValue("predicate"), false).get());
+ SFC::convertSummaryField(false, *doc.getValue("predicate")).get());
}
@@ -695,21 +684,17 @@ Test::requireThatTensorIsNotConverted()
TEST_CALL(checkTensor(createTensor({ {{{"x", "4"}, {"y", "5"}}, 7} },
{"x", "y"}),
SFC::convertSummaryField(false,
- *doc.getValue("tensor"),
- true).get()));
+ *doc.getValue("tensor")).get()));
doc.setValue("tensor", TensorFieldValue());
TEST_CALL(checkTensor(Tensor::UP(),
SFC::convertSummaryField(false,
- *doc.getValue("tensor"),
- true).get()));
+ *doc.getValue("tensor")).get()));
}
void Test::checkStringForAllConversions(const string& expected, const FieldValue* fv) {
ASSERT_TRUE(fv != nullptr);
- for (bool use_slime : {true, false}) {
- checkString(expected, SFC::convertSummaryField(false, *fv, use_slime).get());
- }
+ checkString(expected, SFC::convertSummaryField(false, *fv).get());
}
const ReferenceDataType& Test::getAsRefType(const string& name) const {
@@ -751,7 +736,7 @@ void Test::requireThatReferenceInCompositeTypeEmitsSlimeData() {
FieldBlock expect(R"({"inner_ref":"id:ns:target_dummy_document::foo"})");
checkData(expect.binary,
- SFC::convertSummaryField(false, *doc.getValue("nested"), true).get());
+ SFC::convertSummaryField(false, *doc.getValue("nested")).get());
}
} // namespace
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
index fc5f1288f00..3b4a72eb4fd 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
@@ -104,7 +104,7 @@ DocumentStoreAdapter::writeField(const FieldValue &value, ResType type)
void
-DocumentStoreAdapter::convertFromSearchDoc(Document &doc, uint32_t docId, bool useSlimeInsideFields)
+DocumentStoreAdapter::convertFromSearchDoc(Document &doc, uint32_t docId)
{
for (size_t i = 0; i < _resultClass->GetNumEntries(); ++i) {
const ResConfigEntry * entry = _resultClass->GetEntry(i);
@@ -141,7 +141,7 @@ DocumentStoreAdapter::convertFromSearchDoc(Document &doc, uint32_t docId, bool u
fieldName.c_str(), fieldValue->toString().c_str(),
entry->_type);
FieldValue::UP convertedFieldValue =
- SummaryFieldConverter::convertSummaryField(markup, *fieldValue, useSlimeInsideFields);
+ SummaryFieldConverter::convertSummaryField(markup, *fieldValue);
if (convertedFieldValue.get() != NULL) {
if (!writeField(*convertedFieldValue, entry->_type)) {
LOG(warning,
@@ -181,7 +181,7 @@ DocumentStoreAdapter(const search::IDocumentStore & docStore,
}
DocsumStoreValue
-DocumentStoreAdapter::getMappedDocsum(uint32_t docId, bool useSlimeInsideFields)
+DocumentStoreAdapter::getMappedDocsum(uint32_t docId)
{
if (!_resultPacker.Init(getSummaryClassId())) {
LOG(warning,
@@ -201,7 +201,7 @@ DocumentStoreAdapter::getMappedDocsum(uint32_t docId, bool useSlimeInsideFields)
"getMappedDocSum(%u): document={\n%s\n}",
docId,
document->toString(true).c_str());
- convertFromSearchDoc(*document, docId, useSlimeInsideFields);
+ convertFromSearchDoc(*document, docId);
const char * buf;
uint32_t buflen;
if (!_resultPacker.GetDocsumBlob(&buf, &buflen)) {
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
index d58117ace96..26c6b7683fc 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
@@ -32,8 +32,7 @@ private:
search::docsummary::ResType type);
void
- convertFromSearchDoc(document::Document &doc, uint32_t docId,
- bool useSlimeInsideFields);
+ convertFromSearchDoc(document::Document &doc, uint32_t docId);
public:
DocumentStoreAdapter(const search::IDocumentStore &docStore,
@@ -48,7 +47,7 @@ public:
}
uint32_t getNumDocs() const override { return _docStore.nextId(); }
- search::docsummary::DocsumStoreValue getMappedDocsum(uint32_t docId, bool useSlimeInsideFields) override;
+ search::docsummary::DocsumStoreValue getMappedDocsum(uint32_t docId) override;
uint32_t getSummaryClassId() const override { return _resultClass->GetClassID(); }
};
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
index f5f37468b79..91420dad7ac 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -70,8 +70,7 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback {
::decode(Memory(buf.GetDrainPos(), buf.GetUsedLen()), slime), 0u);
}
uint32_t getNumDocs() const override { return 2; }
- DocsumStoreValue getMappedDocsum(uint32_t docid, bool useSlimeInsideFields) override {
- EXPECT_EQUAL(true, useSlimeInsideFields);
+ DocsumStoreValue getMappedDocsum(uint32_t docid) override {
EXPECT_EQUAL(1u, docid);
EXPECT_TRUE(packer->Init(0));
EXPECT_TRUE(packer->AddInteger(4));
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
index ae611cd71a1..fe4b7c990ca 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
@@ -39,9 +39,8 @@ public:
*
* @return docsum blob location and size
* @param docid local document id
- * @param useSlimeInsideFields use serialized slime instead of json for structured fields
**/
- virtual DocsumStoreValue getMappedDocsum(uint32_t docid, bool useSlimeInsideFields) = 0;
+ virtual DocsumStoreValue getMappedDocsum(uint32_t docid) = 0;
/**
* Will return default input class used.
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index c4e70e452cf..e0d0a9fab42 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -121,9 +121,7 @@ static void convertEntry(GetDocsumsState *state,
case RES_JSONSTRING:
entry->_resolve_field(&ptr, &len, &state->_docSumFieldSpace);
if (len != 0) {
- // note: 'JSONSTRING' really means 'structured data',
- // and in this code path we depend on calling the
- // getMappedDocsum api with flag useSlimeInsideFields=true
+ // note: 'JSONSTRING' really means 'structured data'
size_t d = BinaryFormat::decode_into(Memory(ptr, len), slime, inserter);
if (d != len) {
LOG(warning, "could not decode %u bytes: %zu bytes decoded", len, d);
@@ -157,7 +155,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci,
}
} else {
// look up docsum entry
- DocsumStoreValue value = docinfos->getMappedDocsum(docid, true);
+ DocsumStoreValue value = docinfos->getMappedDocsum(docid);
// re-pack docsum blob
GeneralResult gres(rci.inputClass, 0, docid, 0);
if (! gres.inplaceUnpack(value)) {
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
index 5945770d084..6f545dfe88e 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
@@ -36,12 +36,10 @@
#include <vespa/vespalib/geo/zcurve.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/stllike/string.h>
-#include <vespa/vespalib/util/jsonwriter.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/slime/convenience.h>
#include <vespa/vespalib/data/slime/binary_format.h>
-#include <vespa/vespalib/data/slime/json_format.h>
#include <vespa/eval/tensor/serialization/slime_binary_format.h>
#include <vespa/eval/tensor/serialization/typed_binary_format.h>
#include <vespa/vespalib/objects/nbostream.h>
@@ -86,7 +84,6 @@ using search::util::URL;
using std::make_pair;
using std::pair;
using std::vector;
-using vespalib::JSONWriter;
using vespalib::asciistream;
using vespalib::geo::ZCurve;
using vespalib::make_string;
@@ -236,178 +233,6 @@ struct SummaryHandler {
};
-
-class JsonFiller : public ConstFieldValueVisitor {
- JSONWriter &_json;
- bool _tokenize;
-
- virtual void visit(const AnnotationReferenceFieldValue & v ) {
- (void)v;
- _json.beginObject();
- _json.appendKey("error");
- _json.appendString("cannot convert from annotation reference field");
- _json.endObject();
- }
- virtual void visit(const Document & v) {
- (void)v;
- _json.beginObject();
- _json.appendKey("error");
- _json.appendString("cannot convert from field of type document");
- _json.endObject();
- }
-
- virtual void visit(const MapFieldValue & v) {
- _json.beginArray();
- for (const auto & entry : v) {
- _json.beginObject();
-
- _json.appendKey("key");
- const FieldValue &key = *(entry.first);
- key.accept(*this);
-
- const FieldValue &val = *(entry.second);
- _json.appendKey("value");
- val.accept(*this);
-
- _json.endObject();
- }
- _json.endArray();
- }
-
- virtual void visit(const ArrayFieldValue &value) {
- _json.beginArray();
- if (value.size() > 0) {
- for (const FieldValue &fv : value) {
- fv.accept(*this);
- }
- }
- _json.endArray();
- }
-
- virtual void visit(const StringFieldValue &value) {
- if (_tokenize) {
- asciistream tmp;
- SummaryHandler handler(value.getValue(), tmp);
- handleIndexingTerms(handler, value);
- _json.appendString(tmp.str());
- } else {
- _json.appendString(value.getValue());
- }
- }
-
- virtual void visit(const IntFieldValue &value) {
- int32_t v = value.getValue(); _json.appendInt64(v);
- }
- virtual void visit(const LongFieldValue &value) {
- int64_t v = value.getValue(); _json.appendInt64(v);
- }
- virtual void visit(const ShortFieldValue &value) {
- int16_t v = value.getValue(); _json.appendInt64(v);
- }
- virtual void visit(const ByteFieldValue &value) {
- int8_t v = value.getAsByte(); _json.appendInt64(v);
- }
- virtual void visit(const DoubleFieldValue &value) {
- double v = value.getValue(); _json.appendDouble(v);
- }
- virtual void visit(const FloatFieldValue &value) {
- float v = value.getValue(); _json.appendFloat(v);
- }
-
- virtual void
- visit(const PredicateFieldValue &value)
- {
- _json.appendJSON(value.toString());
- }
-
- virtual void
- visit(const RawFieldValue &value)
- {
- // Use base64 coding to represent raw values in json strings.
- std::pair<const char *, size_t> buf = value.getAsRaw();
- vespalib::string rawVal(buf.first, buf.first + buf.second);
- _json.appendString(vespalib::Base64::encode(rawVal));
- }
-
- virtual void visit(const StructFieldValue &value) {
- // stringref type_name = value.getDataType()->getName();
- if (*value.getDataType() == *SearchDataType::URI) {
- FieldValue::UP uriAllValue = value.getValue("all");
- if (uriAllValue.get() != NULL &&
- uriAllValue->inherits(IDENTIFIABLE_CLASSID(StringFieldValue)))
- {
- uriAllValue->accept(*this);
- return;
- }
- }
- _json.beginObject();
- for (StructFieldValue::const_iterator itr = value.begin(); itr != value.end(); ++itr) {
- _json.appendKey(itr.field().getName());
- FieldValue::UP nextValue(value.getValue(itr.field()));
- (*nextValue).accept(*this);
- }
- _json.endObject();
- }
-
- virtual void visit(const WeightedSetFieldValue &value) {
- _json.beginArray();
- if ( value.size() > 0) {
- for (const auto & entry : value) {
- _json.beginObject();
- _json.appendKey("item");
- entry.first->accept(*this);
- _json.appendKey("weight");
- int weight = static_cast<const IntFieldValue &>(*entry.second).getValue();
- _json.appendInt64(weight);
- _json.endObject();
- }
- }
- _json.endArray();
- }
-
- virtual void visit(const TensorFieldValue &value) override {
- const auto &tensor = value.getAsTensorPtr();
- if (tensor) {
- auto slime =
- vespalib::tensor::SlimeBinaryFormat::serialize(*tensor);
- vespalib::SimpleBuffer buf;
- vespalib::slime::JsonFormat::encode(*slime, buf, true);
- _json.appendJSON(buf.get().make_string());
- } else {
- // No tensor value => empty object
- _json.beginObject();
- _json.endObject();
- }
- }
-
- void visit(const ReferenceFieldValue& value) override {
- _json.appendString(value.hasValidDocumentId()
- ? value.getDocumentId().toString()
- : string());
- }
-
-public:
- JsonFiller(bool markup, JSONWriter &json)
- : _json(json), _tokenize(markup) {}
-};
-
-class JsonConverter : public FieldValueConverter {
- bool _tokenize;
-public:
- JsonConverter(bool tokenize)
- : _tokenize(tokenize)
- {}
-
- FieldValue::UP convert(const FieldValue &input) {
- asciistream target;
- JSONWriter json(target);
- JsonFiller visitor(_tokenize, json);
- input.accept(visitor);
- return FieldValue::UP(new StringFieldValue(target.str()));
- }
-
-};
-
class SummaryFieldValueConverter : protected ConstFieldValueVisitor
{
asciistream _str;
@@ -688,16 +513,10 @@ public:
FieldValue::UP
SummaryFieldConverter::convertSummaryField(bool markup,
- const FieldValue &value,
- bool useSlimeInsideFields)
+ const FieldValue &value)
{
- if (useSlimeInsideFields) {
- SlimeConverter subConv(markup);
- return SummaryFieldValueConverter(markup, subConv).convert(value);
- } else {
- JsonConverter subConv(markup);
- return SummaryFieldValueConverter(markup, subConv).convert(value);
- }
+ SlimeConverter subConv(markup);
+ return SummaryFieldValueConverter(markup, subConv).convert(value);
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
index 9d6f54755cc..ebf723f2111 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
@@ -14,7 +14,7 @@ class SummaryFieldConverter
{
public:
static document::FieldValue::UP
- convertSummaryField(bool markup, const document::FieldValue &value, bool useSlimeInsideFields);
+ convertSummaryField(bool markup, const document::FieldValue &value);
};
} // namespace search::docsummary
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
index f2025e8c161..101fd91c5af 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
@@ -25,6 +25,7 @@
#include <vespa/searchlib/attribute/extendableattributes.h>
#include <vespa/searchlib/common/sortspec.h>
#include <vespa/storage/visiting/visitor.h>
+#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/documentapi/messagebus/messages/queryresultmessage.h>
using namespace search::aggregation;
diff --git a/vsm/src/vespa/vsm/vsm/docsumfilter.cpp b/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
index eb4e0bf532f..e858c8ca8a6 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -1,11 +1,9 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumfilter.h"
-#include "jsondocsumwriter.h"
#include "slimefieldwriter.h"
#include <vespa/searchsummary/docsummary/resultclass.h>
#include <vespa/searchsummary/docsummary/summaryfieldconverter.h>
-#include <vespa/vespalib/util/jsonwriter.h>
#include <vespa/document/fieldvalue/literalfieldvalue.h>
#include <vespa/document/base/exceptions.h>
#include <vespa/log/log.h>
@@ -216,7 +214,6 @@ DocsumFilter::DocsumFilter(const DocsumToolsPtr &tools, const IDocSumCache & doc
_fields(),
_highestFieldNo(0),
_packer(tools.get() ? tools->getResultConfig() : NULL),
- _jsonWriter(),
_flattenWriter(),
_snippetModifiers(NULL),
_cachedValue(),
@@ -316,33 +313,6 @@ DocsumFilter::writeField(const document::FieldValue & fv, const FieldPath & path
}
}
-void
-DocsumFilter::writeJSONField(const DocsumFieldSpec & fieldSpec,
- const Document & docsum,
- ResultPacker & packer)
-{
- if (fieldSpec.getCommand() == VsmsummaryConfig::Fieldmap::NONE) {
- const DocsumFieldSpec::FieldIdentifier & fieldId = fieldSpec.getOutputField();
- const document::FieldValue * fv = docsum.getField(fieldId.getId());
- if (fv != NULL) {
- LOG(debug, "writeJSONField: About to write field '%d' as JSONSTRING: field value = '%s'",
- fieldId.getId(), fv->toString().c_str());
- if (!fieldSpec.hasIdentityMapping()) {
- _jsonWriter.setInputFields(fieldSpec.getInputFields());
- }
- _jsonWriter.write(*fv);
- vespalib::string s = _jsonWriter.getResult();
- packer.AddLongString(s.c_str(), s.size());
- _jsonWriter.clear();
- } else {
- LOG(debug, "writeJSONField: Field value not set for field '%d'", fieldId.getId());
- packer.AddEmpty();
- }
- } else {
- LOG(debug, "writeJSONField: Cannot handle this command");
- packer.AddEmpty();
- }
-}
void
DocsumFilter::writeSlimeField(const DocsumFieldSpec & fieldSpec,
@@ -467,7 +437,7 @@ DocsumFilter::getSummaryClassId() const
}
DocsumStoreValue
-DocsumFilter::getMappedDocsum(uint32_t id, bool useSlimeInsideFields)
+DocsumFilter::getMappedDocsum(uint32_t id)
{
const ResultClass *resClass = _tools->getResultClass();
if (resClass == NULL) {
@@ -476,17 +446,12 @@ DocsumFilter::getMappedDocsum(uint32_t id, bool useSlimeInsideFields)
const Document & doc = _docsumCache->getDocSum(id);
- LOG(spam, "getMappedDocsum %u [useSlimeInsideFields=%s]", id, useSlimeInsideFields ? "true" : "false");
-
_packer.Init(resClass->GetClassID());
for (FieldSpecList::iterator it(_fields.begin()), end = _fields.end(); it != end; ++it) {
ResType type = it->getResultType();
if (type == RES_JSONSTRING || type == RES_XMLSTRING) {
- if (useSlimeInsideFields) {
- writeSlimeField(*it, doc, _packer);
- } else {
- writeJSONField(*it, doc, _packer);
- }
+ // this really means 'structured data'
+ writeSlimeField(*it, doc, _packer);
} else {
if (it->getInputFields().size() == 1 && it->getCommand() == VsmsummaryConfig::Fieldmap::NONE) {
const DocsumFieldSpec::FieldIdentifier & fieldId = it->getInputFields()[0];
diff --git a/vsm/src/vespa/vsm/vsm/docsumfilter.h b/vsm/src/vespa/vsm/vsm/docsumfilter.h
index 370843a3789..d39526a2575 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfilter.h
+++ b/vsm/src/vespa/vsm/vsm/docsumfilter.h
@@ -9,7 +9,6 @@
#include <vespa/vsm/vsm/docsumfieldspec.h>
#include <vespa/vsm/vsm/fieldsearchspec.h>
#include <vespa/vsm/vsm/flattendocsumwriter.h>
-#include <vespa/vsm/vsm/jsondocsumwriter.h>
#include <vespa/vsm/vsm/vsm-adapter.h>
#include <vespa/searchsummary/docsummary/resultpacker.h>
#include <vespa/searchsummary/docsummary/docsumstore.h>
@@ -38,7 +37,6 @@ private:
FieldSpecList _fields; // list of summary fields to generate
size_t _highestFieldNo;
ResultPacker _packer;
- JSONDocsumWriter _jsonWriter;
FlattenDocsumWriter _flattenWriter;
const FieldModifierMap * _snippetModifiers;
document::FieldValue::UP _cachedValue;
@@ -52,7 +50,6 @@ private:
VsmsummaryConfig::Fieldmap::Command command,
const Document & docsum, bool & modified);
void writeField(const document::FieldValue & fv, const FieldPath & path, ResType type, ResultPacker & packer);
- void writeJSONField(const DocsumFieldSpec & fieldSpec, const Document & docsum, ResultPacker & packer);
void writeSlimeField(const DocsumFieldSpec & fieldSpec, const Document & docsum, ResultPacker & packer);
void writeFlattenField(const DocsumFieldSpec & fieldSpec, const Document & docsum, ResultPacker & packer);
void writeEmpty(ResType type, ResultPacker & packer);
@@ -86,7 +83,7 @@ public:
void setDocSumStore(const IDocSumCache & docsumCache) { _docsumCache = &docsumCache; }
// Inherit doc from IDocsumStore
- DocsumStoreValue getMappedDocsum(uint32_t id, bool useSlimeInsideFields) override;
+ DocsumStoreValue getMappedDocsum(uint32_t id) override;
uint32_t getNumDocs() const override;
uint32_t getSummaryClassId() const override;
};