contains.js (738B)
1 const field = require('../../field'); 2 3 module.exports = { 4 detect : function (query) { 5 if (!query) return false; 6 if ('object' !== typeof query) return false; 7 if ('string' !== typeof query.field) return false; 8 return 'string' === typeof query.term; 9 }, 10 compile: function (query) { 11 return function (data) { 12 return field(query.field, data, function check (value) { 13 if ('string' === typeof value) { 14 return ~value.toLowerCase().indexOf(query.term.toLowerCase()); 15 } else if (Array.isArray(value)) { 16 for(const v of value) 17 if (check(v)) return true; 18 return false; 19 } else { 20 return false; 21 } 22 }) ? query.boost : 0; 23 }; 24 }, 25 };