Merge pull request #2093 from omnivore-app/feature/nested-labels

Allow wildcards in label: filter
This commit is contained in:
Hongbo Wu 2023-04-21 23:08:48 +08:00 committed by GitHub
commit c3a7615d90
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -27,10 +27,24 @@ import {
} from './types'
const appendQuery = (builder: ESBuilder, query: string): ESBuilder => {
const fields = ['title', 'content', 'author', 'description', 'siteName']
if (query.includes('*')) {
// wildcard query
fields.forEach((field) => {
builder = builder.orQuery('wildcard', {
[field]: {
value: query,
case_insensitive: true,
},
})
})
return builder.queryMinimumShouldMatch(1)
}
return builder
.orQuery('multi_match', {
query,
fields: ['title', 'content', 'author', 'description', 'siteName'],
fields,
operator: 'and',
type: 'cross_fields',
})
@ -119,8 +133,25 @@ const appendIncludeLabelFilter = (
builder = builder.query('nested', {
path: 'labels',
query: {
terms: {
'labels.name': filter.labels,
bool: {
should: filter.labels.map((label) => {
if (label.includes('*')) {
// Wildcard query
return {
wildcard: {
'labels.name': {
value: label,
},
},
}
}
return {
term: {
'labels.name': label,
},
}
}),
minimum_should_match: 1,
},
},
})