81 lines
1.6 KiB
JavaScript
81 lines
1.6 KiB
JavaScript
module.exports = function (searchString, hitsQuery) {
|
|
// A shallow copy will prevent hitsQuery from being modified.
|
|
const queryDsl = { ...hitsQuery }
|
|
|
|
queryDsl.from = 0
|
|
queryDsl.size = 0
|
|
|
|
queryDsl.aggs = {
|
|
primaryDomains: {
|
|
terms: {
|
|
field: 'primaryDomain.id',
|
|
size: 100
|
|
}
|
|
},
|
|
dictionaries: {
|
|
terms: {
|
|
field: 'dictionary.id',
|
|
size: 200
|
|
}
|
|
},
|
|
sources: {
|
|
terms: {
|
|
field: 'source.code'
|
|
}
|
|
},
|
|
slovenianHits: {
|
|
filter: {
|
|
multi_match: {
|
|
query: searchString,
|
|
type: 'phrase',
|
|
fields: [
|
|
'term',
|
|
'synonyms',
|
|
'label',
|
|
'definition',
|
|
'other',
|
|
'domainLabels',
|
|
'links'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
foreign: {
|
|
nested: {
|
|
path: 'foreignEntries'
|
|
},
|
|
aggs: {
|
|
targetLanguages: {
|
|
terms: {
|
|
field: 'foreignEntries.lang.id',
|
|
size: 50
|
|
}
|
|
},
|
|
foreignHits: {
|
|
filter: {
|
|
multi_match: {
|
|
query: searchString,
|
|
type: 'phrase',
|
|
fields: [
|
|
'foreignEntries.terms',
|
|
'foreignEntries.synonyms',
|
|
'foreignEntries.definition'
|
|
]
|
|
}
|
|
},
|
|
aggs: {
|
|
sourceLanguages: {
|
|
terms: {
|
|
field: 'foreignEntries.lang.id',
|
|
size: 50
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return queryDsl
|
|
}
|