From 3ce85149313383bfc064237748e5a80d6e16180d Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Fri, 31 Mar 2023 11:10:27 +0700 Subject: change solr and mapping data --- src/pages/api/shop/search.js | 53 +++++++++++++++++++++---------------------- src/pages/api/shop/suggest.js | 2 +- 2 files changed, 27 insertions(+), 28 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 3d6b3f26..d6829f6e 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -4,36 +4,35 @@ import camelcaseObjectDeep from 'camelcase-object-deep' const productResponseMap = (products) => { return products.map((product) => { let productMapped = { - id: product.product_id ? product.product_id[0] : '', - image: product.image ? product.image[0] : '', - code: product.default_code ? product.default_code[0] : '', - name: product.product_name ? product.product_name[0] : '', + id: product.product_id_i || '', + image: product.image_s || '', + code: product.default_code_s || '', + name: product.name_s || '', lowestPrice: { - price: product.price ? product.price[0] : 0, - priceDiscount: product.price_discount ? product.price_discount[0] : 0, - discountPercentage: product.discount ? product.discount[0] : 0 + price: product.price_f || 0, + priceDiscount: product.discount_f || 0, + discountPercentage: product.price_discount_f || 0 }, - variantTotal: product.variant_total ? product.variant_total[0] : 0, - stockTotal: product.stock_total ? product.stock_total[0] : 0, - weight: product.weight ? product.weight[0] : 0, + variantTotal: product.variant_total_i || 0, + stockTotal: product.stock_total_f || 0, + weight: product.weight_f || 0, manufacture: {}, categories: [] } - if (product.manufacture_id && product.brand) { + if (product.manufacture_id_i && product.manufacture_name_s) { productMapped.manufacture = { - id: product.manufacture_id ? product.manufacture_id[0] : '', - name: product.brand ? product.brand[0] : '' + id: product.manufacture_id_i || '', + name: product.manufacture_name_s || '' } } productMapped.categories = [ { - id: product.category_id ? product.category_id[0] : '', - name: product.category_name ? product.category_name[0] : '' + id: product.category_id_i || '', + name: product.category_name_s || '' } ] - return productMapped }) } @@ -54,24 +53,24 @@ export default async function handler(req, res) { let paramOrderBy = '' switch (orderBy) { case 'price-asc': - paramOrderBy = ', price_discount ASC' + paramOrderBy = ', price_discount_f ASC' break case 'price-desc': - paramOrderBy = ', price_discount DESC' + paramOrderBy = ', price_discount_f DESC' break case 'popular': - paramOrderBy = ', search_rank DESC' + paramOrderBy = ', search_rank_i DESC' break case 'stock': - paramOrderBy = ', stock_total DESC' + paramOrderBy = ', stock_total_f DESC' break } let limit = 30 let offset = (page - 1) * limit let parameter = [ - 'facet.field=brand_str', - 'facet.field=category_name_str', + 'facet.field=manufacture_name_s', + 'facet.field=category_name_s', 'facet=true', 'indent=true', `facet.query=${q}`, @@ -79,19 +78,19 @@ export default async function handler(req, res) { `q=${q}`, `start=${offset}`, `rows=${limit}`, - `sort=product_rating DESC ${paramOrderBy}`, - `fq=price_discount:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]` + `sort=product_rating_f DESC ${paramOrderBy}`, + `fq=price_discount_f:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]` ] - if (brand) parameter.push(`fq=brand:${brand}`) - if (category) parameter.push(`fq=category_name:${category}`) + if (brand) parameter.push(`fq=manufacture_name_s:${brand}`) + if (category) parameter.push(`fq=category_name_s:${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('&')) + let result = await axios(process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&')) try { result.data.response.products = productResponseMap(result.data.response.docs) result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start) diff --git a/src/pages/api/shop/suggest.js b/src/pages/api/shop/suggest.js index cc0ff2b3..5a1b559a 100644 --- a/src/pages/api/shop/suggest.js +++ b/src/pages/api/shop/suggest.js @@ -5,7 +5,7 @@ export default async function handler(req, res) { let result = await axios( process.env.SOLR_HOST + - `/solr/products/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}` + `/solr/product/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}` ) try { res.status(200).json(result.data.suggest.mySuggester[q]) -- cgit v1.2.3