diff --git a/server/controllers/lighthouse.js b/server/controllers/lighthouse.js index d31a32d..4e0020f 100644 --- a/server/controllers/lighthouse.js +++ b/server/controllers/lighthouse.js @@ -28,33 +28,94 @@ function getResults (input) { 'query': { 'bool': { 'should': [ - { + { // Match search text as phrase - Name + 'match_phrase': { + 'name': { + 'query': input.s.trim(), + 'boost': 10, + }, + }, + }, + { // Match search text - Name 'match': { 'name': { - 'query': '*' + input.s.trim() + '*', + 'query': input.s.trim(), 'boost': 5, }, }, }, + { // Contains search term - Name + 'query_string': { + 'query' : '*' + input.s.trim() + '*', + 'fields': [ + 'name', + ], + 'boost': 3, + }, + }, { - 'nested': { // Need nested query because value is a nested object on the elastic document + 'nested': { 'path' : 'value', 'query': { 'bool': { 'should': [ - { - 'match': { - 'value.stream.metadata.title': '*' + input.s.trim() + '*', + { // Contains search term in Author, Title, Description + 'query_string': { + 'query' : '*' + input.s.trim() + '*', + 'fields': [ + 'value.stream.metadata.author', + 'value.stream.metadata.title', + 'value.stream.metadata.description', + ], + 'boost': 1, }, }, - { + { // Match search term - Author 'match': { - 'value.stream.metadata.author': '*' + input.s.trim() + '*', + 'value.stream.metadata.author': { + 'query': input.s.trim(), + 'boost': 2, + }, }, }, - { + { // Match search text as phrase - Author + 'match_phrase': { + 'value.stream.metadata.author': { + 'query': input.s.trim(), + 'boost': 3, + }, + }, + }, + { // Match search term - Title 'match': { - 'value.stream.metadata.description': '*' + input.s.trim() + '*', + 'value.stream.metadata.title': { + 'query': input.s.trim(), + 'boost': 2, + }, + }, + }, + { // Match search text as phrase - Title + 'match_phrase': { + 'value.stream.metadata.title': { + 'query': input.s.trim(), + 'boost': 3, + }, + }, + }, + { // Match search term - Description + 'match': { + 'value.stream.metadata.description': { + 'query': input.s.trim(), + 'boost': 2, + }, + }, + }, + { // Match search text as phrase - Description + 'match_phrase': { + 'value.stream.metadata.description': { + 'query': input.s.trim(), + 'boost': 3, + }, }, }, ],