summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahoo-inc.com>2017-02-22 09:19:04 +0100
committerArne H Juul <arnej@yahoo-inc.com>2017-02-23 10:32:31 +0100
commit2ff02f1570202fd3d6583c7c87de166a53ba1ee0 (patch)
tree745b50f79c41a426a4ee96d152a5d6cb45126bb2 /searchsummary
parentcd5b88f04d9f2bad030142b7bf6f31d360110e49 (diff)
always assume GDFLAG_ALLOW_SLIME
* remove oldWriteDocsum and supporting code.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp203
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h9
2 files changed, 8 insertions, 204 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index 01ebf333fe2..c4e70e452cf 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -28,151 +28,6 @@ IDocsumWriter::slime2RawBuf(const Slime & slime, RawBuf & buf)
return (buf.GetUsedLen() - preUsed);
}
-uint32_t
-DynamicDocsumWriter::WriteClassID(uint32_t classID, search::RawBuf *target)
-{
- uint32_t written = 0;
-
- target->append(&classID, sizeof(classID));
- written = sizeof(classID);
-
- return written;
-}
-
-
-uint32_t
-DynamicDocsumWriter::GenerateDocsum(uint32_t docid,
- GetDocsumsState *state,
- const ResultClass *outputClass,
- search::RawBuf *target)
-{
- uint32_t written = 0;
-
- written += WriteClassID(outputClass->GetClassID(), target);
-
- for (uint32_t i = 0; i < outputClass->GetNumEntries(); i++) {
-
- const ResConfigEntry *outCfg = outputClass->GetEntry(i);
- IDocsumFieldWriter *writer = _overrideTable[outCfg->_enumValue];
- LOG_ASSERT(writer != NULL);
-
- written += writer->WriteField(docid, NULL, state, outCfg->_type, target);
- }
-
- return written;
-}
-
-
-uint32_t
-DynamicDocsumWriter::RepackDocsum(GeneralResult *gres,
- GetDocsumsState *state,
- const ResultClass *outputClass,
- search::RawBuf *target)
-{
- uint32_t written = 0;
-
- written += WriteClassID(outputClass->GetClassID(), target);
-
- DocsumFormat::Appender appender(*target);
-
- for (uint32_t i = 0; i < outputClass->GetNumEntries(); i++) {
-
- const ResConfigEntry *outCfg = outputClass->GetEntry(i);
- IDocsumFieldWriter *writer = _overrideTable[outCfg->_enumValue];
-
- if (writer != NULL) {
-
- written += writer->WriteField(gres->GetDocID(), gres, state,
- outCfg->_type, target);
-
- } else {
-
- int inIdx = gres->GetClass()->GetIndexFromEnumValue(outCfg->_enumValue);
- const ResConfigEntry *inCfg = gres->GetClass()->GetEntry(inIdx);
-
- if (inCfg != NULL && inCfg->_type == outCfg->_type) {
-
- // copy field
-
- const ResEntry *entry = gres->GetEntry(inIdx);
- LOG_ASSERT(entry != NULL);
-
- switch (outCfg->_type) {
-
- case RES_INT: {
- written += appender.addInt32(entry->_intval);
- break; }
-
- case RES_SHORT: {
- written += appender.addShort(entry->_intval);
- break; }
-
- case RES_BYTE: {
- written += appender.addByte(entry->_intval);
- break; }
-
- case RES_FLOAT: {
- written += appender.addFloat(entry->_doubleval);
- break; }
-
- case RES_DOUBLE: {
- written += appender.addDouble(entry->_doubleval);
- break; }
-
- case RES_INT64: {
- written += appender.addInt64(entry->_int64val);
- break; }
-
- case RES_STRING: {
- uint32_t slen = entry->_stringlen;
- const char *sval = entry->_stringval;
- written += appender.addShortData(sval, slen);
- break; }
-
- case RES_DATA: {
- uint32_t dlen = entry->_datalen;
- const char *dval = entry->_dataval;
- written += appender.addShortData(dval, dlen);
- break; }
-
- case RES_XMLSTRING:
- case RES_JSONSTRING:
- case RES_FEATUREDATA:
- case RES_LONG_STRING: {
- uint32_t flen = entry->_len;
- uint32_t slen = entry->_get_length();
-
- // preserve compression flag
- target->append(&flen, sizeof(flen));
- written += sizeof(flen);
- target->append(entry->_stringval, slen);
- written += slen;
- break; }
-
- case RES_TENSOR:
- case RES_LONG_DATA: {
- uint32_t flen = entry->_len;
- uint32_t dlen = entry->_get_length();
-
- // preserve compression flag
- target->append(&flen, sizeof(flen));
- written += sizeof(flen);
- target->append(entry->_dataval, dlen);
- written += dlen;
- break; }
- }
-
- } else {
- // insert empty field
- written += appender.addEmpty(outCfg->_type);
- }
- }
- } // END for loop
-
- return written;
-}
-
-
DynamicDocsumWriter::ResolveClassInfo
DynamicDocsumWriter::resolveClassInfo(vespalib::stringref outputClassName, uint32_t inputClassId) const
{
@@ -223,51 +78,6 @@ DynamicDocsumWriter::resolveInputClass(ResolveClassInfo &rci, uint32_t id) const
rci.outputClass = rci.inputClass;
rci.outputClassInfo = rci.inputClass->getDynamicInfo();
}
- if ((rci.inputClass == rci.outputClass) && (rci.outputClassInfo->_overrideCnt == 0)) {
- rci.mustRepack = false;
- }
-}
-
-void
-DynamicDocsumWriter::resolveInputClass(ResolveClassInfo &rci, DocsumStoreValue blob) const
-{
- uint32_t id = _resultConfig->GetClassID(blob.pt(), blob.len());
- resolveInputClass(rci, id);
-}
-
-
-uint32_t
-DynamicDocsumWriter::oldWriteDocsum(uint32_t docid,
- GetDocsumsState *state,
- IDocsumStore *docinfos,
- search::RawBuf *target)
-{
- ResolveClassInfo rci = resolveOutputClass(state->_args.getResultClassName());
- if (rci.mustSkip) {
- return 0;
- } else if (rci.allGenerated) {
- // generate docsum entry on-the-fly
- return GenerateDocsum(docid, state, rci.outputClass, target);
- }
- // look up docsum entry
- DocsumStoreValue value = docinfos->getMappedDocsum(docid, false);
- resolveInputClass(rci, value);
- if (rci.mustSkip) {
- return 0;
- } else if (rci.mustRepack) {
- // re-pack docsum blob
- GeneralResult gres(rci.inputClass, 0, docid, 0);
- if (gres.inplaceUnpack(value)) {
- return RepackDocsum(&gres, state, rci.outputClass, target);
- } else { // unpack failed
- LOG(error, "Unpack failed: illegal docsum entry for document %d", docid);
- }
- } else {
- // pass-through docsum blob
- target->append(value.pt(), value.len());
- return value.len();
- }
- return 0;
}
@@ -500,13 +310,12 @@ DynamicDocsumWriter::WriteDocsum(uint32_t docid,
IDocsumStore *docinfos,
search::RawBuf *target)
{
- if ((state->_args.getFlags() & ::search::fs4transport::GDFLAG_ALLOW_SLIME) != 0) {
- vespalib::Slime slime;
- vespalib::slime::SlimeInserter inserter(slime);
- insertDocsum(resolveClassInfo(state->_args.getResultClassName(), docinfos->getSummaryClassId()), docid, state, docinfos, slime, inserter);
- return slime2RawBuf(slime, *target);
- }
- return oldWriteDocsum(docid, state, docinfos, target);
+ vespalib::Slime slime;
+ vespalib::slime::SlimeInserter inserter(slime);
+ ResolveClassInfo rci = resolveClassInfo(state->_args.getResultClassName(),
+ docinfos->getSummaryClassId());
+ insertDocsum(rci, docid, state, docinfos, slime, inserter);
+ return slime2RawBuf(slime, *target);
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
index 66e64bc7d10..a773c704536 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
@@ -25,13 +25,12 @@ public:
struct ResolveClassInfo {
bool mustSkip;
bool allGenerated;
- bool mustRepack;
uint32_t outputClassId;
const ResultClass *outputClass;
const ResultClass::DynamicInfo *outputClassInfo;
const ResultClass *inputClass;
ResolveClassInfo()
- : mustSkip(false), allGenerated(false), mustRepack(true),
+ : mustSkip(false), allGenerated(false),
outputClassId(ResultConfig::NoClassID()),
outputClass(NULL), outputClassInfo(NULL), inputClass(NULL)
{ }
@@ -85,12 +84,8 @@ private:
search::RawBuf *target);
void resolveInputClass(ResolveClassInfo &rci, uint32_t id) const;
- void resolveInputClass(ResolveClassInfo &rci, DocsumStoreValue blob) const;
- ResolveClassInfo resolveOutputClass(vespalib::stringref outputClassName) const;
- uint32_t oldWriteDocsum(uint32_t docid, GetDocsumsState *state,
- IDocsumStore *docinfos,
- search::RawBuf *target);
+ ResolveClassInfo resolveOutputClass(vespalib::stringref outputClassName) const;
public:
DynamicDocsumWriter(ResultConfig *config, KeywordExtractor *extractor);