diff options
Diffstat (limited to 'src/pages/api')
| -rw-r--r-- | src/pages/api/shop/search.js | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index c1e00d16..3d6b3f26 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -46,7 +46,9 @@ export default async function handler(req, res) { category = '', priceFrom = 0, priceTo = 0, - orderBy = '' + orderBy = '', + operation = 'AND', + fq = '' } = req.query let paramOrderBy = '' @@ -68,13 +70,13 @@ export default async function handler(req, res) { let limit = 30 let offset = (page - 1) * limit let parameter = [ - `facet.query=${q}`, + 'facet.field=brand_str', + 'facet.field=category_name_str', 'facet=true', 'indent=true', - 'q.op=AND', + `facet.query=${q}`, + `q.op=${operation}`, `q=${q}`, - 'facet.field=brand_str', - 'facet.field=category_name_str', `start=${offset}`, `rows=${limit}`, `sort=product_rating DESC ${paramOrderBy}`, @@ -84,6 +86,11 @@ export default async function handler(req, res) { if (brand) parameter.push(`fq=brand:${brand}`) if (category) parameter.push(`fq=category_name:${category}`) + // Single fq in url params + if (typeof fq === 'string') parameter.push(`fq=${fq}`) + // Multi fq in url params + if (Array.isArray(fq)) parameter = parameter.concat(fq.map((val) => `fq=${val}`)) + let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&')) try { result.data.response.products = productResponseMap(result.data.response.docs) |
