lucene-filter.js

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

range.js (938B)


      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 (!('inclusive' in query)) return false;
      8     if (isNaN(query.term_min)) return false;
      9     return !isNaN(query.term_max);
     10   },
     11   compile: function (query) {
     12     return function (data) {
     13       return field(query.field, data, function (value) {
     14         // console.log('range value', query, value);
     15         let min = parseFloat(query.term_min);
     16         let max = parseFloat(query.term_max);
     17         let inclusive = query.inclusive;
     18         if (inclusive === 'both') {
     19           return (value >= min) && (value <= max);
     20         }
     21         if (inclusive === 'left') {
     22           return (value >= min) && (value < max);
     23         }
     24         if (inclusive === 'right') {
     25           return (value > min) && (value <= max);
     26         }
     27         return false;
     28       });
     29     };
     30   },
     31 };