feathers-solr-node
Advanced tools
Comparing version 0.2.6 to 0.2.7
@@ -1,16 +0,15 @@ | ||
const feathers = require("feathers"); | ||
const rest = require("feathers-rest"); | ||
const hooks = require("feathers-hooks"); | ||
const bodyParser = require("body-parser"); | ||
const errorHandler = require("feathers-errors/handler"); | ||
const solr = require("../main"); | ||
const express = require("@feathersjs/express"); | ||
const logger = require("winston"); | ||
const feathers = require('feathers'); | ||
const rest = require('feathers-rest'); | ||
const hooks = require('feathers-hooks'); | ||
const bodyParser = require('body-parser'); | ||
const solr = require('../main'); | ||
const express = require('@feathersjs/express'); | ||
const logger = require('winston'); | ||
const Service = new solr({ | ||
host: "115.79.204.120", | ||
port: 8086, | ||
core: "topic_27009", | ||
username: "solr", | ||
password: "solradmin", | ||
host: 'localhost', | ||
port: 8089, | ||
core: 'topic_27009', | ||
username: 'solr', | ||
password: 'solradmin', | ||
paginate: { | ||
@@ -27,3 +26,3 @@ default: 10, | ||
.use(bodyParser.urlencoded({ extended: true })) | ||
.use("/solr", Service) | ||
.use('/solr', Service) | ||
.use( | ||
@@ -33,3 +32,3 @@ express.errorHandler({ | ||
logger, | ||
json: (err, req, res, next) => { | ||
json: (err, req, res) => { | ||
res.json({ | ||
@@ -47,2 +46,3 @@ error: { | ||
console.log("Feathers app started on 127.0.0.1:3030"); | ||
// eslint-disable-next-line no-console | ||
console.log('Feathers app started on 127.0.0.1:3030'); |
@@ -958,3 +958,4 @@ /*! | ||
path: params.fullPath, | ||
family: params.ipVersion | ||
family: params.ipVersion, | ||
timeout: params.timeout || 180000, | ||
}; | ||
@@ -1009,3 +1010,4 @@ | ||
headers: headers, | ||
family: params.ipVersion | ||
family: params.ipVersion, | ||
timeout: params.timeout || 180000, | ||
}; | ||
@@ -1012,0 +1014,0 @@ |
@@ -1,17 +0,17 @@ | ||
const _ = require("./util"); | ||
const errors = require("@feathersjs/errors"); | ||
const _ = require('./util'); | ||
const errors = require('@feathersjs/errors'); | ||
class QueryParser { | ||
constructor(options) { | ||
this.mapKey = { | ||
$select: "fields", | ||
$search: "query", | ||
$limit: "limit", | ||
$skip: "offset", | ||
$sort: "sort", | ||
$facet: "facet", | ||
$params: "params" | ||
$select: 'fields', | ||
$search: 'query', | ||
$limit: 'limit', | ||
$skip: 'offset', | ||
$sort: 'sort', | ||
$facet: 'facet', | ||
$params: 'params' | ||
//$qf: "qf" | ||
//'$or':'filter' | ||
}; | ||
this.METHODS = ["$or"]; | ||
this.METHODS = ['$or']; | ||
this.setDefaultQuery(options); | ||
@@ -22,13 +22,13 @@ } | ||
this.defaultQuery = { | ||
query: "*:*", // TODO: score | ||
query: '*:*', // TODO: score | ||
//filter: [], | ||
// sort: '', | ||
fields: _.get(options, "query.$select") || "*", | ||
fields: _.get(options, 'query.$select') || '*', | ||
limit: | ||
_.get(options, "paginate.default") || | ||
_.get(options, "paginate.max") || | ||
_.get(options, 'paginate.default') || | ||
_.get(options, 'paginate.max') || | ||
10, | ||
offset: 0 | ||
}; | ||
this.rowsMax = _.get(options, "paginate.max"); | ||
this.rowsMax = _.get(options, 'paginate.max'); | ||
} | ||
@@ -61,7 +61,7 @@ | ||
filterBuilder(item, param) { | ||
if (item === "$or") { | ||
let value = this[item](item, param); | ||
if (item === '$or') { | ||
let value = this[item](item, param,true); | ||
return [value]; | ||
} | ||
if (item[0] === "$") { | ||
if (item[0] === '$') { | ||
return false; | ||
@@ -76,14 +76,15 @@ } | ||
Object.keys(param).forEach(f => { | ||
if (f[0] === "$" && typeof this[f] !== "undefined") { | ||
if (f[0] === '$' && typeof this[f] !== 'undefined') { | ||
let condition = this[f](field, param[f]); | ||
$filter.push(condition); | ||
} | ||
else { | ||
$filter.push(...this.filter(f, param[f])); | ||
} | ||
}); | ||
} else if (Array.isArray(param)) { | ||
if (Array.isArray(param)) { | ||
param = "(" + param.join(" OR ") + ")"; | ||
} | ||
$filter.push(field + ":" + param); | ||
param = '(' + param.join(' OR ') + ')'; | ||
$filter.push(field + ':' + param); | ||
} else { | ||
$filter.push(field + ":" + param); | ||
$filter.push(field + ':' + param); | ||
} | ||
@@ -108,5 +109,5 @@ return $filter; | ||
Object.keys(param).forEach(name => { | ||
order.push(name + (parseInt(param[name]) === 1 ? " asc" : " desc")); | ||
order.push(name + (parseInt(param[name]) === 1 ? ' asc' : ' desc')); | ||
}); | ||
return order.join(","); | ||
return order.join(','); | ||
} | ||
@@ -116,3 +117,3 @@ | ||
if (Array.isArray(param)) { | ||
param = param.join(","); | ||
param = param.join(','); | ||
} | ||
@@ -133,3 +134,3 @@ return param; | ||
} | ||
return "!" + field + ':("' + param + '")'; | ||
return '!' + field + ':("' + param + '")'; | ||
} | ||
@@ -145,15 +146,15 @@ | ||
$lt(field, param) { | ||
return field + ":[* TO " + param + "}"; | ||
return field + ':[* TO ' + param + '}'; | ||
} | ||
$lte(field, param) { | ||
return field + ":[* TO " + param + "]"; | ||
return field + ':[* TO ' + param + ']'; | ||
} | ||
$gt(field, param) { | ||
return field + ":{" + param + " TO *]"; | ||
return field + ':{' + param + ' TO *]'; | ||
} | ||
$gte(field, param) { | ||
return field + ":[" + param + " TO *]"; | ||
return field + ':[' + param + ' TO *]'; | ||
} | ||
@@ -165,21 +166,28 @@ | ||
} | ||
return "!" + field + ':"' + param + '"'; | ||
return '!' + field + ':"' + param + '"'; | ||
} | ||
$or(field, param) { | ||
//let filter = this.query.filter; | ||
$or(field, param, root) { | ||
let operator = 'OR'; | ||
var $filter = []; | ||
if (Array.isArray(param)) { | ||
param.forEach(item => { | ||
var f = Object.keys(item)[0]; | ||
if (f[0] === "$" && typeof this[f] !== "undefined") { | ||
let condition = this[f](f, item[f]); | ||
$filter.push(condition); | ||
} else { | ||
$filter.push(...this.filter(f, item[f])); | ||
let fq = this.filter(field, item); | ||
if(fq.length>1){ | ||
fq = '(' +fq.join(' AND ') +')'; | ||
} | ||
$filter.push(fq); | ||
// var f = Object.keys(item)[0]; | ||
// if (f[0] === '$' && typeof this[f] !== 'undefined') { | ||
// let condition = this[f](f, item[f]); | ||
// $filter.push(condition); | ||
// } else { | ||
// $filter.push(...this.filter(f, item[f])); | ||
// } | ||
}); | ||
} else { | ||
Object.keys(param).forEach(item => { | ||
if (item[0] === "$" && typeof param[item] !== "undefined") { | ||
if (item[0] === '$' && typeof param[item] !== 'undefined') { | ||
let condition = this[item](item, param[item]); | ||
@@ -193,8 +201,19 @@ $filter.push(condition); | ||
if ($filter.length > 0) { | ||
return "(" + $filter.join(" OR ") + ")"; | ||
if(root && $filter.length || $filter.length==1){ | ||
return $filter.join(` ${operator} `); | ||
} | ||
return null; | ||
else if ($filter.length > 1) { | ||
return '('+ $filter.join(` ${operator} `) + ')'; | ||
} | ||
return []; | ||
} | ||
// $or(field, param) { | ||
// return this['$andor']('or', param); | ||
// } | ||
$and(field, param) { | ||
return this['$andor']('or', param); | ||
} | ||
$qf(field, params) { | ||
@@ -216,4 +235,4 @@ return Object.assign({}, this.query.params || {}, { | ||
parseDelete(id, params) { | ||
if (id === "*" || id === "*:*") { | ||
return { delete: { query: "*:*" } }; | ||
if (id === '*' || id === '*:*') { | ||
return { delete: { query: '*:*' } }; | ||
} else if (id) { | ||
@@ -227,5 +246,5 @@ return { delete: { id: id } }; | ||
}); | ||
return { delete: { query: query.join(" AND ") } }; | ||
return { delete: { query: query.join(' AND ') } }; | ||
} | ||
return { delete: { query: "*:*" } }; | ||
return { delete: { query: '*:*' } }; | ||
} | ||
@@ -232,0 +251,0 @@ } |
@@ -10,3 +10,3 @@ { | ||
"description": "Solr Adapter for Feathersjs. Base on Solr-client, so can also used as a Solr-client", | ||
"version": "0.2.6", | ||
"version": "0.2.7", | ||
"repository": { | ||
@@ -13,0 +13,0 @@ "type": "git", |
108353
21
3140