I modified the query to be more complex so that relevancy is considered.
Features of the query are below in order of importance(weight): 1) Phrase Match on Name 2) Term Match on Name 3) Contains Term on Name 4) Phrase Match on Author,Title,Description 5) Term Match on Author,Title,Description 6) Contains Term on Author,Title,Description
This commit is contained in:
parent
90e2d3f64b
commit
c32f8e9367
1 changed files with 71 additions and 10 deletions
|
@ -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,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
Loading…
Add table
Reference in a new issue