You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
|
|
var peliasQuery = require('pelias-query');
|
|
|
|
|
|
|
|
/**
|
|
|
|
This view is the same as `peliasQuery.view.focus` with one exception:
|
|
|
|
|
|
|
|
if the view is generated successfully, we add a 'filter' clause which
|
|
|
|
restricts the targeted '_type' to be in the list specified below.
|
|
|
|
|
|
|
|
documents which are not in the '_type' list below will simply score 0 for
|
|
|
|
this section of the query.
|
|
|
|
**/
|
|
|
|
|
|
|
|
module.exports = function( subview ){
|
|
|
|
return function( vs ){
|
|
|
|
|
|
|
|
// don't perform this query on single character inputs
|
|
|
|
// as its too unperformant to sort a large part of the index.
|
|
|
|
if( vs.var('input:name').get().length < 2 ){
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if( !subview ){ return null; } // subview validation failed
|
|
|
|
var macroView = peliasQuery.view.focus( subview );
|
|
|
|
if( !macroView ){ return null; } // macroView validation failed
|
|
|
|
var view = macroView( vs );
|
|
|
|
|
|
|
|
if( view && view.hasOwnProperty('function_score') ){
|
|
|
|
view.function_score.filter = {
|
|
|
|
'or': [
|
|
|
|
{ 'term': { 'layer': 'venue' } },
|
|
|
|
{ 'term': { 'layer': 'address' } }
|
|
|
|
]
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
return view;
|
|
|
|
};
|
|
|
|
};
|