diff --git a/resources/js/components/Listing/Listing.vue b/resources/js/components/Listing/Listing.vue index e055b95d0..050c583e5 100644 --- a/resources/js/components/Listing/Listing.vue +++ b/resources/js/components/Listing/Listing.vue @@ -9,10 +9,6 @@ export default { type: String, default: window.config.index.product, }, - query: { - type: Function, - default: () => [], - }, categoryId: { type: Number, }, @@ -101,7 +97,6 @@ export default { const config = await InstantSearchMixin.methods.getInstantSearchClientConfig.bind(this).call() config.getBaseFilters = this.getBaseFilters - config.getQuery = this.getQuery return config }, @@ -138,19 +133,14 @@ export default { return this.baseFilters().concat(extraFilters) }, - getQuery(query, search_attributes) { - let extraQueries = [] + getQuery(query, search_attributes, config) { + let queries = InstantSearchMixin.methods.getQuery.bind(this).call(this, ...arguments) if (this.categoryId) { - extraQueries.push(this.$root.categoryPositions(this.categoryId)) - } - - // __NO_QUERY__ is a temporary band-aid for https://github.com/searchkit/searchkit/pull/1407 - if (query && query !== '__NO_QUERY__') { - extraQueries.push(this.relevanceQueryMatch(query, search_attributes, config?.fuzziness)) + queries.push(this.$root.categoryPositions(this.categoryId)) } - return this.query().concat(extraQueries) + return queries }, windowTitle(routeState) { diff --git a/resources/js/components/Search/InstantSearchMixin.vue b/resources/js/components/Search/InstantSearchMixin.vue index 328c007e1..55b84362c 100644 --- a/resources/js/components/Search/InstantSearchMixin.vue +++ b/resources/js/components/Search/InstantSearchMixin.vue @@ -5,6 +5,17 @@ import { instantsearchMiddlewares } from '../../stores/useInstantsearchMiddlewar import { createInsightsMiddleware } from 'instantsearch.js/es/middlewares/createInsightsMiddleware' export default { + props: { + query: { + type: Function, + default: function (query, searchAttributes, config) { + // __NO_QUERY__ is a temporary band-aid for https://github.com/searchkit/searchkit/pull/1407 + if (query && query !== '__NO_QUERY__') { + return this.relevanceQueryMatch(query, searchAttributes, config?.fuzziness) + } + }, + }, + }, data: () => ({ searchkit: null, searchClient: null, @@ -45,6 +56,7 @@ export default { }) }, }, + getQuery: this.getQuery, } }, @@ -56,6 +68,13 @@ export default { return instantsearchMiddlewares }, + getQuery(query, search_attributes, config) { + const esQuery = this.query(...arguments) + let queries = Array.isArray(esQuery) ? esQuery : [esQuery] + + return queries.filter((q) => q) + }, + relevanceQueryMatch(query, search_attributes, fuzziness = 'AUTO:4,8') { // Copied from searchkit.js default behavior when getQuery is not defined. const getFieldsMap = (boostMultiplier) => {