UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

29 lines 4.02 kB
import { Operator } from './operator'; import { Query } from '../query/query'; import { Operators } from './operators'; /** * A fuzzy search operator for string fields. * * Behaves differently for strings with spaces and without. * With spaces searches for matches containing the tokenized strings. * Without spaces searches for strings within the default edit distance. * See [docs]{@link https://www.elastic.co/guide/en/elasticsearch/reference/6.6/query-dsl-query-string-query.html#_fuzziness} * for more information. */ export class Like extends Operator { constructor() { super(1); } createQuery(elasticKeywords, args) { this.checkArgumentsCount(args); const escaped = Operator.escapeInput(args[0]); return Operator.forEachKeyword(elasticKeywords, keyword => escaped.wasEscaped ? new Query(`(${keyword}:${escaped.value})`) : new Query(`(${keyword}:${escaped.value}~)`)); } getOperatorNameTemplate() { return ['search.operator.like', Operator.INPUT_PLACEHOLDER]; } serialize() { return Operators.LIKE; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2VhcmNoL21vZGVscy9vcGVyYXRvci9saWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sSUFBSyxTQUFRLFFBQWdCO0lBQ3RDO1FBQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxlQUE4QixFQUFFLElBQW1CO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQzFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEksQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvcn0gZnJvbSAnLi9vcGVyYXRvcic7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICcuLi9xdWVyeS9xdWVyeSc7XG5pbXBvcnQge09wZXJhdG9yc30gZnJvbSAnLi9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEEgZnV6enkgc2VhcmNoIG9wZXJhdG9yIGZvciBzdHJpbmcgZmllbGRzLlxuICpcbiAqIEJlaGF2ZXMgZGlmZmVyZW50bHkgZm9yIHN0cmluZ3Mgd2l0aCBzcGFjZXMgYW5kIHdpdGhvdXQuXG4gKiBXaXRoIHNwYWNlcyBzZWFyY2hlcyBmb3IgbWF0Y2hlcyBjb250YWluaW5nIHRoZSB0b2tlbml6ZWQgc3RyaW5ncy5cbiAqIFdpdGhvdXQgc3BhY2VzIHNlYXJjaGVzIGZvciBzdHJpbmdzIHdpdGhpbiB0aGUgZGVmYXVsdCBlZGl0IGRpc3RhbmNlLlxuICogU2VlIFtkb2NzXXtAbGluayBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlLzYuNi9xdWVyeS1kc2wtcXVlcnktc3RyaW5nLXF1ZXJ5Lmh0bWwjX2Z1enppbmVzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgTGlrZSBleHRlbmRzIE9wZXJhdG9yPHN0cmluZz4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigxKTtcbiAgICB9XG5cbiAgICBjcmVhdGVRdWVyeShlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIGFyZ3M6IEFycmF5PHN0cmluZz4pOiBRdWVyeSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcmd1bWVudHNDb3VudChhcmdzKTtcbiAgICAgICAgY29uc3QgZXNjYXBlZCA9IE9wZXJhdG9yLmVzY2FwZUlucHV0KGFyZ3NbMF0pO1xuICAgICAgICByZXR1cm4gT3BlcmF0b3IuZm9yRWFjaEtleXdvcmQoZWxhc3RpY0tleXdvcmRzLFxuICAgICAgICAgICAga2V5d29yZCA9PiBlc2NhcGVkLndhc0VzY2FwZWQgPyBuZXcgUXVlcnkoYCgke2tleXdvcmR9OiR7ZXNjYXBlZC52YWx1ZX0pYCkgOiBuZXcgUXVlcnkoYCgke2tleXdvcmR9OiR7ZXNjYXBlZC52YWx1ZX1+KWApKTtcbiAgICB9XG5cbiAgICBnZXRPcGVyYXRvck5hbWVUZW1wbGF0ZSgpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIFsnc2VhcmNoLm9wZXJhdG9yLmxpa2UnLCBPcGVyYXRvci5JTlBVVF9QTEFDRUhPTERFUl07XG4gICAgfVxuXG4gICAgc2VyaWFsaXplKCk6IE9wZXJhdG9ycyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBPcGVyYXRvcnMuTElLRTtcbiAgICB9XG59XG4iXX0=