[Search] Processing as separate function

Moved the search term processing to be its
own separate function.
This commit is contained in:
shale 2015-07-14 12:55:00 -07:00
parent 27c7410318
commit 35d038e826

View File

@ -120,6 +120,39 @@ define(
});
}
// Currently specific to elasticsearch
function processSearchTerm(searchTerm) {
// Allow exact searches by checking to see if the first and last
// chars are quotes.
if ((searchTerm.substr(0, 1) === '"' && searchTerm.substr(searchTerm.length - 1, 1) === '"') ||
(searchTerm.substr(0, 1) === "'" && searchTerm.substr(searchTerm.length - 1, 1) === "'")) {
// Remove the quotes, because of how elasticsearch processses.
// This will mean that elasticsearch will return any object that has
// that searchTerm as a part of the name _separated by spaces_.
searchTerm = searchTerm.substring(1, searchTerm.length - 1);
}
// If the search starts with 'type:', then search for domain object type, rather
// than the domain object name.
else if (searchTerm.includes('type:')) {
// Do nothing for now
} else if (searchTerm.includes('name:')) {
// Do nothing for now
} else {
// Put wildcards on front and end to allow substring behavior.
// This works when options like AND and OR are not used, which is
// the case most of the time.
// e.g. The input 'sine' become '*sine*', but the input
// 'sine OR telemetry' becomes '*sine OR telemetry*' instead of
// '*sine* OR *telemetry*'
searchTerm = '*' + searchTerm + '*';
// Assume that the search term is for the name by default
searchTerm = "name:" + searchTerm;
}
return searchTerm;
}
// Use elasticsearch's search to search through all the objects
function queryElasticsearch(inputID, maxResults) {
var searchTerm;
@ -140,26 +173,10 @@ define(
searchTerm = document.getElementById("searchinput").value;
}
// Process search term.
// Allow exact searches by checking to see if the first and last
// chars are quotes.
if ((searchTerm.substr(0, 1) === '"' && searchTerm.substr(searchTerm.length - 1, 1) === '"') ||
(searchTerm.substr(0, 1) === "'" && searchTerm.substr(searchTerm.length - 1, 1) === "'")) {
// Remove the quotes, because of how elasticsearch processses.
// This will mean that elasticsearch will return any object that has
// that searchTerm as a part of the name _separated by spaces_.
searchTerm = searchTerm.substring(1, searchTerm.length - 1);
} else {
// Put wildcards on front and end to allow substring behavior.
// This works when options like AND and OR are not used, which is
// the case most of the time.
// e.g. The input 'sine' become '*sine*', but the input
// 'sine OR telemetry' becomes '*sine OR telemetry*' instead of
// '*sine* OR *telemetry*'
searchTerm = '*' + searchTerm + '*';
}
// Assume that the search term is for the name by default
searchTerm = "name:" + searchTerm;
// Process search term
searchTerm = processSearchTerm(searchTerm);
console.log(searchTerm);
// Get the data...
return $http({