lucene-filter.js

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

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