Browse Source

simplifying the query building

pull/59/head
Harish Krishna 10 years ago
parent
commit
4644ed1ad6
  1. 94
      query/suggest_multiple.js

94
query/suggest_multiple.js

@ -4,7 +4,15 @@ var logger = require('../src/logger');
// Build pelias suggest query
function generate( params, precision ){
var getPrecision = function(zoom) {
var CmdGenerator = function(params){
this.params = params;
this.cmd = {
'text': params.input
};
};
CmdGenerator.prototype.get_precision = function() {
var zoom = this.params.zoom;
switch (true) {
case (zoom > 15):
return 5; // zoom: >= 16
@ -16,81 +24,37 @@ function generate( params, precision ){
return 2; // zoom: 4-5
default:
return 1; // zoom: 1-3 or when zoom: undefined
}
}
};
var cmd = {
'text' : params.input,
'pelias_1' : {
'completion' : {
'size' : params.size,
'field' : 'suggest',
'context': {
'dataset': params.layers,
'location': {
'value': [ params.lon, params.lat ],
'precision': 5
}
}
}
},
'pelias_2' : {
'completion' : {
'size' : params.size,
'field' : 'suggest',
'context': {
'dataset': params.layers,
'location': {
'value': [ params.lon, params.lat ],
'precision': 3
}
}
}
},
'pelias_3' : {
CmdGenerator.prototype.add_suggester = function(name, precision, layers, fuzzy) {
this.cmd[name] = {
'completion' : {
'size' : params.size,
'size' : this.params.size,
'field' : 'suggest',
'context': {
'dataset': params.layers,
'dataset': layers || this.params.layers,
'location': {
'value': [ params.lon, params.lat ],
'precision': 1
}
}
}
},
'pelias_4' : {
'completion' : {
'size' : params.size,
'field' : 'suggest',
'context': {
'dataset': ['admin0', 'admin1', 'admin2'],
'location': {
'value': [ params.lon, params.lat ],
'precision': precision || getPrecision(params.zoom)
}
}
}
},
'pelias_5' : {
'completion' : {
'size' : params.size,
'field' : 'suggest',
'context': {
'dataset': params.layers,
'location': {
'value': [ params.lon, params.lat ],
'precision': 3
'value': [ this.params.lon, this.params.lat ],
'precision': precision || this.get_precision()
}
},
'fuzzy': {}
'fuzzy': {
'fuzziness': fuzzy || 0
}
}
}
};
};
// logger.log( 'cmd', JSON.stringify( cmd, null, 2 ) );
return cmd;
var cmd = new CmdGenerator(params);
cmd.add_suggester('pelias_1', 5);
cmd.add_suggester('pelias_2', 3);
cmd.add_suggester('pelias_3', 1);
cmd.add_suggester('pelias_4', undefined, ['admin0', 'admin1', 'admin2']);
cmd.add_suggester('pelias_5', 3, undefined, 'AUTO');
// logger.log( 'cmd', JSON.stringify( cmd.cmd, null, 2 ) );
return cmd.cmd;
}

Loading…
Cancel
Save