@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
109 lines • 4.03 kB
JavaScript
import { Source } from '../../models/searchservice/response/Source';
/**
* A factory which creates results from different sources
*/
var ResultsFactory = /** @class */ (function () {
function ResultsFactory() {
}
ResultsFactory.create = function (results, source) {
var _this = this;
if (!results) {
return [];
}
return results.map(function (result, index) {
var resultIndex = index + 1;
switch (source) {
case Source.KnowledgeManager:
return _this.fromKnowledgeManager(result, resultIndex);
case Source.Google:
return _this.fromGoogleCustomSearchEngine(result, resultIndex);
case Source.DocumentVertical:
return _this.fromDocumentVertical(result, resultIndex);
case Source.FunctionVertical:
return _this.fromFunctionVertical(result, resultIndex);
default:
return _this.fromCustomSource(result, resultIndex);
}
});
};
ResultsFactory.fromKnowledgeManager = function (result, index) {
var _a;
var rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result;
return {
rawData: rawData,
source: Source.KnowledgeManager,
index: index,
name: rawData.name,
description: rawData.description,
link: rawData.website,
id: rawData.id,
distance: result.distance,
distanceFromFilter: result.distanceFromFilter,
highlightedFields: result.highlightedFields,
entityType: rawData.type
};
};
ResultsFactory.fromDocumentVertical = function (result, index) {
var _a;
var rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result;
return {
rawData: rawData,
source: Source.DocumentVertical,
name: rawData.name,
description: rawData.description,
link: rawData.website,
id: rawData.id,
index: index,
segment: result.segment,
document: result.document,
documents: result.documents
};
};
ResultsFactory.fromGoogleCustomSearchEngine = function (result, index) {
var _a;
var rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result;
return {
rawData: rawData,
source: Source.Google,
index: index,
name: rawData.htmlTitle.replace(/(<([^>]+)>)/ig, ''),
description: rawData.htmlSnippet,
link: rawData.link
};
};
ResultsFactory.fromCustomSource = function (result, index) {
return this.fromCustomDataHelper(result, index, Source.Custom);
};
ResultsFactory.fromFunctionVertical = function (result, index) {
return this.fromCustomDataHelper(result, index, Source.FunctionVertical);
};
ResultsFactory.fromCustomDataHelper = function (result, index, source) {
var _a;
var rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result;
return {
rawData: rawData,
source: source,
index: index,
name: rawData.name,
description: rawData.description,
link: rawData.website,
id: rawData.id
};
};
ResultsFactory.fromDirectAnswer = function (result) {
var _a;
var rawData = (_a = result.fieldValues) !== null && _a !== void 0 ? _a : {};
return {
rawData: rawData,
source: Source.KnowledgeManager,
name: rawData.name,
description: rawData.description,
link: result.website,
id: result.id,
entityType: result.type,
};
};
return ResultsFactory;
}());
export { ResultsFactory };
//# sourceMappingURL=ResultsFactory.js.map