graphql-compose-elasticsearch
Version:
Elastic search via GraphQL
72 lines • 2.96 kB
JavaScript
;
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