@imranbarbhuiya/mongoose-fuzzy-searching
Version:
Mongoose fuzzy searching plugin
48 lines (47 loc) • 2.29 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sort = exports.confidenceScore = void 0;
var helpers_1 = require("./helpers");
var search_1 = require("./helpers/db/search");
Object.defineProperty(exports, "confidenceScore", { enumerable: true, get: function () { return search_1.confidenceScore; } });
Object.defineProperty(exports, "sort", { enumerable: true, get: function () { return search_1.sort; } });
var plugin = function (schema, _a) {
var fields = _a.fields, options = _a.options;
var _b = (0, helpers_1.createFields)(schema, fields), indexes = _b.indexes, weights = _b.weights;
var _c = (0, helpers_1.setTransformers)(fields, options), toJSON = _c.toJSON, toObject = _c.toObject;
schema.index(indexes, { weights: weights, name: "fuzzy_text" });
schema.set("toObject", toObject);
schema.set("toJSON", toJSON);
schema.pre("save", function (next) {
return (0, helpers_1.createNGramsMiddleware)(this, fields, next);
});
schema.pre("findOneAndUpdate", function (next) {
return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next);
});
schema.pre("updateMany", function (next) {
return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next);
});
schema.pre("updateOne", function (next) {
return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next);
});
schema.pre("insertMany", function (next, docs) {
(0, helpers_1.createNGramsMiddleware)(docs, fields, next);
});
schema.statics.fuzzySearch = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new (helpers_1.StaticFuzzySearch.bind.apply(helpers_1.StaticFuzzySearch, __spreadArray([void 0], args, false)))().search(this);
};
};
exports.default = plugin;