exact.js (651B)
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 (!query.term) return false; 8 return !isNaN(query.term); 9 }, 10 compile: function (query) { 11 query.similarity = query.similarity || 0; 12 return function (data) { 13 return field(query.field, data, function (value) { 14 value = parseFloat(value); 15 let min = parseFloat(query.term) - query.similarity; 16 let max = parseFloat(query.term) + query.similarity; 17 return (min <= value) && (value <= max); 18 }) ? query.boost : 0; 19 }; 20 }, 21 };