From af6494b92528cee8fae7173e8290c4ebbc334efa Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Wed, 28 Aug 2024 09:47:39 +0700 Subject: handling ready to ship --- src/lib/product/components/ProductSearch.jsx | 4 +++- src/pages/api/shop/search.js | 30 +++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib/product/components/ProductSearch.jsx b/src/lib/product/components/ProductSearch.jsx index eaeac71a..d6e649a8 100644 --- a/src/lib/product/components/ProductSearch.jsx +++ b/src/lib/product/components/ProductSearch.jsx @@ -382,6 +382,8 @@ const ProductSearch = ({ }; const isNotReadyStockPage = router.asPath !== '/shop/search?orderBy=stock'; + + console.log('is spelling', spellings); return ( <> @@ -575,7 +577,7 @@ const ProductSearch = ({ />
- {!spellings ? ( + {spellings?.length < 1 || !spellings ? ( <> Menampilkan  {pageCount > 1 ? ( diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 6f98efcb..a19224df 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -1,6 +1,7 @@ import { productMappingSolr } from '@/utils/solrMapping'; import axios from 'axios'; import camelcaseObjectDeep from 'camelcase-object-deep'; +import searchSuggestApi from '@/core/api/searchSuggestApi'; export default async function handler(req, res) { const { @@ -42,10 +43,29 @@ export default async function handler(req, res) { paramOrderBy += ''; break; } - + + // let suggestWord = null; + // let keywords = q; + // let checkQ = null; + + // if (q != '*') { + // checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); + // if (checkQ.length > 1) { + // const dataSearchSuggest = await axios( + // `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/suggest?q=${checkQ[1]}` + // ); + // suggestWord = dataSearchSuggest.data.suggestions[0]; + // } + // if (suggestWord && suggestWord?.term.split(' ').length <= 1) { + // keywords = `"${escapeSolrQuery(checkQ[0] + ' ' + suggestWord?.term)}"`; + // } + // } + + // let newQ = keywords; + let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q); - + let offset = (page - 1) * limit; let parameter = [ 'facet.field=manufacture_name_s', @@ -54,7 +74,7 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, - `q=${newQ}`, + `q=name_s:${newQ}`, 'qf=name_s', `start=${parseInt(offset)}`, `rows=${limit}`, @@ -105,6 +125,7 @@ export default async function handler(req, res) { let result = await axios( process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&') ); + console.log('ini search', parameter.join('&')); try { result.data.response.products = productMappingSolr( result.data.response.docs, @@ -126,7 +147,7 @@ export default async function handler(req, res) { const escapeSolrQuery = (query) => { if (query == '*') return query; - + query = query.replace(/-/g, ' '); const specialChars = /([\+\!\(\)\{\}\[\]\^"~\*\?:\\\/])/g; @@ -141,7 +162,6 @@ const escapeSolrQuery = (query) => { return escapedWords.join(' '); }; - /*const productResponseMap = (products, pricelist) => { return products.map((product) => { let price = product.price_tier1_v2_f || 0 -- cgit v1.2.3 From 47c66a1c432feaf898e3285520dfa892d22d4ad2 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Fri, 30 Aug 2024 10:25:04 +0700 Subject: search eenggin --- src/pages/api/shop/search.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index a19224df..61f5bf2d 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -65,6 +65,7 @@ export default async function handler(req, res) { let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q); + let excludeDescription = checkQ.map(term => `-description_t:"${term}"`).join(', '); let offset = (page - 1) * limit; let parameter = [ @@ -74,12 +75,12 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, - `q=name_s:${newQ}`, + `q=${newQ}`, 'qf=name_s', `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, - `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`, + `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *], ${excludeDescription}`, ]; if (priceFrom > 0 || priceTo > 0) { -- cgit v1.2.3 From 58a8e3c000c6364f81e37a38f1cf6031b7430985 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Mon, 2 Sep 2024 13:05:46 +0700 Subject: update --- src/pages/api/shop/search.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 61f5bf2d..0227a7eb 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -75,12 +75,14 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, - `q=${newQ}`, - 'qf=name_s', + `q=tool box`, + `defType=dismax`, + 'qf=name_s^2, description_s, category_name, manufacture_name_s', + `mm=${checkQ.length}`, `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, - `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *], ${excludeDescription}`, + `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`, ]; if (priceFrom > 0 || priceTo > 0) { -- cgit v1.2.3 From 277f7eea312492c66ec8d942199dba65593e78b8 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Mon, 2 Sep 2024 15:12:58 +0700 Subject: new --- src/pages/api/shop/search.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 0227a7eb..d0343fb8 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -2,6 +2,7 @@ import { productMappingSolr } from '@/utils/solrMapping'; import axios from 'axios'; import camelcaseObjectDeep from 'camelcase-object-deep'; import searchSuggestApi from '@/core/api/searchSuggestApi'; +import { ECDH } from 'crypto'; export default async function handler(req, res) { const { @@ -65,7 +66,7 @@ export default async function handler(req, res) { let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q); - let excludeDescription = checkQ.map(term => `-description_t:"${term}"`).join(', '); + let excludeDescription = checkQ.map(term => escapeSolrQuery(term)).join(' AND '); let offset = (page - 1) * limit; let parameter = [ @@ -75,10 +76,8 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, - `q=tool box`, - `defType=dismax`, + `q=${excludeDescription}*`, 'qf=name_s^2, description_s, category_name, manufacture_name_s', - `mm=${checkQ.length}`, `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, -- cgit v1.2.3 From e1753f5cb16ce4094a6106a829339b8db2b99dd2 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Fri, 6 Sep 2024 16:38:12 +0700 Subject: search --- src/pages/api/shop/search.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index d0343fb8..089a1722 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -66,7 +66,6 @@ export default async function handler(req, res) { let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q); - let excludeDescription = checkQ.map(term => escapeSolrQuery(term)).join(' AND '); let offset = (page - 1) * limit; let parameter = [ @@ -76,12 +75,13 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=${operation}`, - `q=${excludeDescription}*`, - 'qf=name_s^2, description_s, category_name, manufacture_name_s', + `q=${newQ}`, + `defType=edismax`, + 'qf=name_s description_clean_t category_name manufacture_name_s variants_code_t variants_name_t category_id_ids default_code_s', `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, - `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`, + `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]` ]; if (priceFrom > 0 || priceTo > 0) { @@ -127,7 +127,7 @@ export default async function handler(req, res) { let result = await axios( process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&') ); - console.log('ini search', parameter.join('&')); + try { result.data.response.products = productMappingSolr( result.data.response.docs, -- cgit v1.2.3 From aff296d79cc148a919b33c2c589d6b803fb39a22 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Tue, 10 Sep 2024 14:58:24 +0700 Subject: update --- src/core/api/odooApi.js | 2 +- src/pages/api/shop/search.js | 3 ++- src/pages/index.jsx | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/core/api/odooApi.js b/src/core/api/odooApi.js index 3349ff4b..504d097a 100644 --- a/src/core/api/odooApi.js +++ b/src/core/api/odooApi.js @@ -64,7 +64,7 @@ const odooApi = async (method, url, data = {}, headers = {}) => { } return camelcaseObjectDeep(res.data.result) || []; } catch (error) { - console.log(error); + // console.log(error); } }; diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 089a1722..1b6377f4 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -81,7 +81,8 @@ export default async function handler(req, res) { `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, - `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]` + `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`, + `mm=2` ]; if (priceFrom > 0 || priceTo > 0) { diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 613950a6..0e87205e 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -10,7 +10,7 @@ import { FlashSaleSkeleton } from '@/lib/flashSale/skeleton/FlashSaleSkeleton'; import PreferredBrandSkeleton from '@/lib/home/components/Skeleton/PreferredBrandSkeleton'; import BannerPromoSkeleton from '@/lib/home/components/Skeleton/BannerPromoSkeleton'; import PromotinProgram from '@/lib/promotinProgram/components/HomePage'; -import PagePopupIformation from '~/modules/popup-information'; +import PagePopupIformation from '~/modules/popup-information'; // need change to dynamic and ssr : false import CategoryPilihan from '../lib/home/components/CategoryPilihan'; import odooApi from '@/core/api/odooApi'; import { getAuth } from '~/libs/auth'; @@ -56,7 +56,7 @@ const ProgramPromotion = dynamic(() => const BannerSection = dynamic(() => import('@/lib/home/components/BannerSection') -); +); const CategoryHomeId = dynamic(() => import('@/lib/home/components/CategoryHomeId') ); @@ -71,8 +71,8 @@ import('@/lib/home/components/CategoryDynamicMobile') const CustomerReviews = dynamic(() => import('@/lib/review/components/CustomerReviews') -); -const ServiceList = dynamic(() => import('@/lib/home/components/ServiceList')); +); // need to ssr:false +const ServiceList = dynamic(() => import('@/lib/home/components/ServiceList')); // need to ssr: false -- cgit v1.2.3 From 1e8959ef719689bc8ddd2477fa12e960f4c9a759 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Wed, 11 Sep 2024 10:02:37 +0700 Subject: cr - operation , handle minimum match --- src/pages/api/shop/search.js | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 1b6377f4..550217d8 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -16,6 +16,7 @@ export default async function handler(req, res) { operation = 'AND', fq = '', limit = 30, + source = '', } = req.query; let { stock = '' } = req.query; @@ -65,7 +66,18 @@ export default async function handler(req, res) { // let newQ = keywords; let checkQ = q.trim().split(/[\s\+\-\!\(\)\{\}\[\]\^"~\*\?:\\\/]+/); - let newQ = checkQ.length > 1 ? escapeSolrQuery(q) + '*' : escapeSolrQuery(q); + let newQ = escapeSolrQuery(q); + + const formattedQuery = `(${newQ.split(' ').map(term => `${term}*`).join(' ') })`; + const mm = checkQ.length > 2 ? checkQ.length > 5 ? '65%' : '85%' : `${checkQ.length}`; + + const filterQueries = [ + '-publish_b:false', + 'product_rating_f:[8 TO *]', + 'price_tier1_v2_f:[1 TO *]' + ]; + + const fq_ = filterQueries.join('AND '); let offset = (page - 1) * limit; let parameter = [ @@ -74,15 +86,15 @@ export default async function handler(req, res) { 'facet=true', 'indent=true', `facet.query=${escapeSolrQuery(q)}`, - `q.op=${operation}`, - `q=${newQ}`, + `q.op=OR`, + `q=${source == 'similar' || checkQ.length < 3 ? newQ + '*' : formattedQuery }`, `defType=edismax`, 'qf=name_s description_clean_t category_name manufacture_name_s variants_code_t variants_name_t category_id_ids default_code_s', `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, - `fq=-publish_b:false, product_rating_f:[8 TO *], price_tier1_v2_f:[1 TO *]`, - `mm=2` + `fq=${encodeURIComponent(fq_)}`, + `mm=${encodeURIComponent(mm)}`, ]; if (priceFrom > 0 || priceTo > 0) { @@ -120,10 +132,12 @@ export default async function handler(req, res) { if (stock) parameter.push(`fq=stock_total_f:{1 TO *}`); // Single fq in url params - if (typeof fq === 'string') parameter.push(`fq=${fq}`); + if (typeof fq === 'string') parameter.push(`fq=${encodeURIComponent(fq)}`); // Multi fq in url params if (Array.isArray(fq)) - parameter = parameter.concat(fq.map((val) => `fq=${val}`)); + parameter = parameter.concat(fq.map((val) => `fq=${encodeURIComponent(val)}`)); + + console.log('ini params', parameter); let result = await axios( process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&') -- cgit v1.2.3 From 0112efd7ce539f4276c66e5ad553288a9bf61343 Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Wed, 11 Sep 2024 10:36:32 +0700 Subject: handle if leng 1 --- src/pages/api/shop/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 550217d8..68a9abcd 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -87,7 +87,7 @@ export default async function handler(req, res) { 'indent=true', `facet.query=${escapeSolrQuery(q)}`, `q.op=OR`, - `q=${source == 'similar' || checkQ.length < 3 ? newQ + '*' : formattedQuery }`, + `q=${source == 'similar' || checkQ.length < 3 ? checkQ.length < 2 ? newQ : newQ + '*' : formattedQuery }`, `defType=edismax`, 'qf=name_s description_clean_t category_name manufacture_name_s variants_code_t variants_name_t category_id_ids default_code_s', `start=${parseInt(offset)}`, -- cgit v1.2.3 From 3918b401286243a6ceb376d267b802b87f1b1a2f Mon Sep 17 00:00:00 2001 From: trisusilo48 Date: Thu, 12 Sep 2024 10:16:12 +0700 Subject: handling similar --- src/pages/api/shop/search.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 68a9abcd..6269d3ed 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -69,7 +69,7 @@ export default async function handler(req, res) { let newQ = escapeSolrQuery(q); const formattedQuery = `(${newQ.split(' ').map(term => `${term}*`).join(' ') })`; - const mm = checkQ.length > 2 ? checkQ.length > 5 ? '65%' : '85%' : `${checkQ.length}`; + const mm = checkQ.length > 2 ? checkQ.length > 5 ? '55%' : '85%' : `${checkQ.length}`; const filterQueries = [ '-publish_b:false', @@ -136,9 +136,7 @@ export default async function handler(req, res) { // Multi fq in url params if (Array.isArray(fq)) parameter = parameter.concat(fq.map((val) => `fq=${encodeURIComponent(val)}`)); - - console.log('ini params', parameter); - + let result = await axios( process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&') ); -- cgit v1.2.3