UNPKG

graphql-compose-elasticsearch

Version:
72 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareFunctionScoreInResolve = exports.getFunctionScoreITC = void 0; const Query_1 = require("../Query"); const utils_1 = require("../../../utils"); function getFunctionScoreITC(opts) { const name = (0, utils_1.getTypeName)('QueryFunctionScore', opts); const description = (0, utils_1.desc)(` The function_score allows you to modify the score of documents that are retrieved by a query. This can be useful if, for example, a score function is computationally expensive and it is sufficient to compute the score on a filtered set of documents. [Documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html) `); const RandomScoreType = opts.schemaComposer.createInputTC({ name: (0, utils_1.getTypeName)('QueryFunctionScoreRandom', opts), fields: { seed: 'Float', }, }); return opts.getOrCreateITC(name, () => ({ name, description, fields: { query: () => (0, Query_1.getQueryITC)(opts), boost: 'String', boost_mode: { type: 'String', description: 'Can be: `multiply`, `replace`, `sum`, `avg`, `max`, `min`.', }, random_score: RandomScoreType, functions: [ opts.schemaComposer.createInputTC({ name: (0, utils_1.getTypeName)('QueryFunctionScoreFunction', opts), fields: { filter: () => (0, Query_1.getQueryITC)(opts), random_score: RandomScoreType, weight: 'Float', script_score: 'JSON', field_value_factor: 'JSON', gauss: 'JSON', linear: 'JSON', exp: 'JSON', }, }), ], max_boost: 'Float', score_mode: { type: 'String', description: 'Can be: `multiply`, `sum`, `avg`, `first`, `max`, `min`.', }, min_score: 'Float', }, })); } exports.getFunctionScoreITC = getFunctionScoreITC; function prepareFunctionScoreInResolve(function_score, fieldMap) { if (function_score.query) { function_score.query = (0, Query_1.prepareQueryInResolve)(function_score.query, fieldMap); } if (Array.isArray(function_score.functions)) { function_score.functions = function_score.functions.map((func) => { if (func.filter) { func.filter = (0, Query_1.prepareQueryInResolve)(func.filter, fieldMap); } return func; }); } return function_score; } exports.prepareFunctionScoreInResolve = prepareFunctionScoreInResolve; //# sourceMappingURL=FunctionScore.js.map