lucene-filter.js

Data filter for lucene queries
git clone git://git.finwo.net/lib/lucene-filter.js
Log | Files | Refs | README | LICENSE

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 };