diff --git a/server/controllers/lighthouse.js b/server/controllers/lighthouse.js index da4b2e5..473ee93 100644 --- a/server/controllers/lighthouse.js +++ b/server/controllers/lighthouse.js @@ -41,124 +41,136 @@ 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(), - 'boost': 5, + 'bid_state': { + // Controlling claims should get higher placement in search results. + 'query': 'Controlling', + 'boost': 20, }, }, }, - { // Contains search term - Name - 'query_string': { - 'query' : '*' + input.s.trim() + '*', - 'fields': [ - 'name', - ], - 'boost': 3, - }, - }, { - 'nested': { - 'path' : 'value', - 'query': { - 'bool': { - 'should': [ - { // 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': { - '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.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, - }, - }, - }, - ], + 'function_score': { + 'script_score': { + 'script': { // 100 LBC adds 1 point to the score + 'source': "0.00000001 * doc['effective_amount'].value", }, }, }, }, ], + 'must': [ + { + '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(), + 'boost': 5, + }, + }, + }, + { // Contains search term - Name + 'query_string': { + 'query' : '*' + input.s.trim() + '*', + 'fields': [ + 'name', + ], + 'boost': 3, + }, + }, + { + 'nested': { + 'path' : 'value', + 'query': { + 'bool': { + 'should': [ + { // 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': { + '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.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, + }, + }, + }, + ], + }, + }, + }, + }, + ], + }, + }, + ], }, }, size: input.size, from: input.from, - }, - /* body : { - 'query': { - 'bool': { - 'must': { - 'query_string': { - 'query' : '*' + input.s.trim() + '*', - 'fields': [ - 'name', - 'value.stream.metadata.author', - 'value.stream.metadata.title', - 'value.stream.metadata.description', - ], - }, - }, - }, + sort: { + _score: 'desc', }, - }, */ + }, }); }