Query helpers refactoring
This commit is contained in:
parent
c4a4ec766f
commit
b2a0a55909
|
@ -1,11 +1,10 @@
|
|||
|
||||
import { elasticSearch } from '../../helpers/elastic-search'
|
||||
import { logger } from '../../helpers/logger'
|
||||
import { CONFIG, ELASTIC_SEARCH_QUERY } from '../../initializers/constants'
|
||||
import { DBChannel, EnhancedVideoChannel, IndexableChannel } from '../../types/channel.model'
|
||||
import { ChannelsSearchQuery } from '../../types/search-query/channel-search.model'
|
||||
import { buildSort, extractQueryResult } from './elastic-search-queries'
|
||||
import { buildChannelOrAccountCommonMapping } from './shared'
|
||||
import { buildChannelOrAccountCommonMapping, buildMultiMatchBool } from './shared'
|
||||
import { formatAvatarForAPI, formatAvatarForDB } from './shared/elastic-search-avatar'
|
||||
|
||||
async function queryChannels (search: ChannelsSearchQuery) {
|
||||
|
@ -14,29 +13,7 @@ async function queryChannels (search: ChannelsSearchQuery) {
|
|||
const filter: any[] = []
|
||||
|
||||
if (search.search) {
|
||||
Object.assign(bool, {
|
||||
must: [
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.CHANNELS_MULTI_MATCH_FIELDS,
|
||||
fuzziness: ELASTIC_SEARCH_QUERY.FUZZINESS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
},
|
||||
|
||||
// Better score for exact search
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.CHANNELS_MULTI_MATCH_FIELDS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
Object.assign(bool, buildMultiMatchBool(search.search, ELASTIC_SEARCH_QUERY.CHANNELS_MULTI_MATCH_FIELDS))
|
||||
}
|
||||
|
||||
if (search.blockedAccounts) {
|
||||
|
|
|
@ -5,7 +5,7 @@ import { CONFIG, ELASTIC_SEARCH_QUERY } from '../../initializers/constants'
|
|||
import { DBPlaylist, EnhancedPlaylist, IndexablePlaylist } from '../../types/playlist.model'
|
||||
import { PlaylistsSearchQuery } from '../../types/search-query/playlist-search.model'
|
||||
import { buildSort, extractQueryResult } from './elastic-search-queries'
|
||||
import { addUUIDFilters } from './shared'
|
||||
import { addUUIDFilters, buildMultiMatchBool } from './shared'
|
||||
import { buildChannelOrAccountSummaryMapping, formatActorForDB, formatActorSummaryForAPI } from './shared/elastic-search-actor'
|
||||
|
||||
async function queryPlaylists (search: PlaylistsSearchQuery) {
|
||||
|
@ -14,29 +14,7 @@ async function queryPlaylists (search: PlaylistsSearchQuery) {
|
|||
const filter: any[] = []
|
||||
|
||||
if (search.search) {
|
||||
Object.assign(bool, {
|
||||
must: [
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.PLAYLISTS_MULTI_MATCH_FIELDS,
|
||||
fuzziness: ELASTIC_SEARCH_QUERY.FUZZINESS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
},
|
||||
|
||||
// Better score for exact search
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.PLAYLISTS_MULTI_MATCH_FIELDS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
Object.assign(bool, buildMultiMatchBool(search.search, ELASTIC_SEARCH_QUERY.PLAYLISTS_MULTI_MATCH_FIELDS))
|
||||
}
|
||||
|
||||
if (search.blockedAccounts) {
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
import { exists } from '../../helpers/custom-validators/misc'
|
||||
import { elasticSearch } from '../../helpers/elastic-search'
|
||||
import { logger } from '../../helpers/logger'
|
||||
|
@ -7,7 +6,7 @@ import { CONFIG, ELASTIC_SEARCH_QUERY } from '../../initializers/constants'
|
|||
import { VideosSearchQuery } from '../../types/search-query/video-search.model'
|
||||
import { DBVideo, DBVideoDetails, EnhancedVideo, IndexableVideo, IndexableVideoDetails } from '../../types/video.model'
|
||||
import { buildSort, extractQueryResult } from './elastic-search-queries'
|
||||
import { addUUIDFilters } from './shared'
|
||||
import { addUUIDFilters, buildMultiMatchBool } from './shared'
|
||||
import { buildChannelOrAccountSummaryMapping, formatActorForDB, formatActorSummaryForAPI } from './shared/elastic-search-actor'
|
||||
|
||||
async function queryVideos (search: VideosSearchQuery) {
|
||||
|
@ -16,29 +15,7 @@ async function queryVideos (search: VideosSearchQuery) {
|
|||
const mustNot: any[] = []
|
||||
|
||||
if (search.search) {
|
||||
Object.assign(bool, {
|
||||
must: [
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.VIDEOS_MULTI_MATCH_FIELDS,
|
||||
fuzziness: ELASTIC_SEARCH_QUERY.FUZZINESS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
},
|
||||
|
||||
// Better score for exact search
|
||||
{
|
||||
multi_match: {
|
||||
query: search.search,
|
||||
fields: ELASTIC_SEARCH_QUERY.VIDEOS_MULTI_MATCH_FIELDS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
Object.assign(bool, buildMultiMatchBool(search.search, ELASTIC_SEARCH_QUERY.VIDEOS_MULTI_MATCH_FIELDS))
|
||||
}
|
||||
|
||||
if (search.blockedAccounts) {
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { ELASTIC_SEARCH_QUERY } from '../../../initializers/constants'
|
||||
import validator from 'validator'
|
||||
|
||||
function addUUIDFilters (filters: any[], uuids: string[]) {
|
||||
|
@ -31,6 +32,34 @@ function addUUIDFilters (filters: any[], uuids: string[]) {
|
|||
})
|
||||
}
|
||||
|
||||
export {
|
||||
addUUIDFilters
|
||||
function buildMultiMatchBool (search: string, fields: string[]) {
|
||||
return {
|
||||
must: [
|
||||
{
|
||||
multi_match: {
|
||||
query: search,
|
||||
fields,
|
||||
fuzziness: ELASTIC_SEARCH_QUERY.FUZZINESS,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
}
|
||||
],
|
||||
should: [
|
||||
// Better score for exact search
|
||||
{
|
||||
multi_match: {
|
||||
query: search,
|
||||
fields,
|
||||
operator: ELASTIC_SEARCH_QUERY.OPERATOR,
|
||||
minimum_should_match: ELASTIC_SEARCH_QUERY.MINIMUM_SHOULD_MATCH
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
addUUIDFilters,
|
||||
buildMultiMatchBool
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue