diff --git a/controllers/scriptStorage.js b/controllers/scriptStorage.js index 99a38ceb8..ba44c3111 100644 --- a/controllers/scriptStorage.js +++ b/controllers/scriptStorage.js @@ -2062,6 +2062,8 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { var now = null; var storeDescriptionLength = null; + var includes = null; + var matches = null; if (aRemoved) { aCallback(new statusError({ @@ -2085,6 +2087,8 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { // New script now = new Date(); + includes = findMeta(aMeta, 'UserScript.include.value'); + matches = findMeta(aMeta, 'UserScript.match.value'); storeDescriptionLength = settings.scriptSearchQueryStoreMaxDescription; storeDescriptionLength = rLogographic.test(thisDescription) @@ -2111,6 +2115,8 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { installName: installName, fork: null, meta: aMeta, + _pattern: ((includes ? includes.join(' ') : '') + ' ' + + (matches ? matches.join(' ') : '')).trim(), isLib: isLib, uses: isLib ? null : libraries, _authorId: aUser._id @@ -2147,6 +2153,13 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { : '' ); aScript.meta = aMeta; + + includes = findMeta(aMeta, 'UserScript.include.value'); + matches = findMeta(aMeta, 'UserScript.match.value'); + + aScript._pattern = ((includes ? includes.join(' ') : '') + ' ' + + (matches ? matches.join(' ') : '')).trim() + aScript.uses = libraries; // Okay to update diff --git a/libs/modelQuery.js b/libs/modelQuery.js index 1633a5193..cd33bfba4 100644 --- a/libs/modelQuery.js +++ b/libs/modelQuery.js @@ -125,8 +125,8 @@ var parseScriptSearchQuery = function (aScriptListQuery, aQuery, aLimited) { }); } else { parseModelListSearchQuery(aScriptListQuery, aQuery, { - partialWordMatchFields: ['name', '_description', 'author', '_about' ], - fullWordMatchFields: ['meta.UserScript.include.value', 'meta.UserScript.match.value'] + partialWordMatchFields: ['name', 'author', '_description', '_about'], + fullWordMatchFields: ['_pattern'] }); } }; diff --git a/models/script.js b/models/script.js index f618dd557..cb7721711 100644 --- a/models/script.js +++ b/models/script.js @@ -15,6 +15,7 @@ var scriptSchema = new Schema({ // Visible name: String, _description: String, + _pattern: String, author: String, installs: { type: Number, default: 0 }, installsSinceUpdate: { type: Number, default: 0 }, @@ -54,6 +55,7 @@ scriptSchema.index({ isLib: 1, name: 1, author: 1, + _pattern: 1, _description: 1, _about: 1 });