summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2025-12-05 10:50:31 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2025-12-05 10:50:31 +0700
commit9ca4e764383ffc3800fbe899dd7e07c297c51e75 (patch)
treedcdbae47ccc58d145802a5fb127fcbfc45176a12 /src
parentc10b1479d9a134700f10c3f8c734daf5042626c5 (diff)
<Miqdad> fix query
Diffstat (limited to 'src')
-rw-r--r--src/pages/api/shop/search.js41
-rw-r--r--src/pages/searchkey/[slug].jsx50
2 files changed, 76 insertions, 15 deletions
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index 42d16100..fec75fd8 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -210,6 +210,47 @@ export default async function handler(req, res) {
fq.map((val) => `fq=${encodeURIComponent(val)}`)
);
+ // Searchkey
+ if (req.query.from === 'searchkey') {
+ const phrase = q.replace(/-/g, ' ').trim();
+
+ // encode q
+ const encodedQuery = encodeURIComponent(`variants_name_t:"${phrase}"`);
+
+ const strictQuery = [
+ `q=${encodedQuery}`,
+ `defType=edismax`,
+ `q.op=AND`,
+ `mm=${encodeURIComponent('100%')}`,
+ `qf=${encodeURIComponent('name_s description_clean_t')}`,
+ `rows=${limit}`,
+ `start=${(page - 1) * limit}`,
+ ];
+
+ if (fq) strictQuery.push(`fq=${encodeURIComponent(fq)}`);
+
+ const solrUrl =
+ process.env.SOLR_HOST + '/solr/product/select?' + strictQuery.join('&');
+
+ console.log('[STRICT SEARCHKEY QUERY]', solrUrl);
+
+ const result = await axios(solrUrl);
+
+ try {
+ result.data.response.products = productMappingSolr(
+ result.data.response.docs,
+ auth?.pricelist || false
+ );
+
+ delete result.data.response.docs;
+ result.data = camelcaseObjectDeep(result.data);
+
+ return res.status(200).json(result.data);
+ } catch (e) {
+ return res.status(400).json({ error: e.message });
+ }
+ }
+
const solrUrl =
process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&');
diff --git a/src/pages/searchkey/[slug].jsx b/src/pages/searchkey/[slug].jsx
index f09520f4..9cf1df05 100644
--- a/src/pages/searchkey/[slug].jsx
+++ b/src/pages/searchkey/[slug].jsx
@@ -47,26 +47,41 @@ export default function KeywordPage() {
}
}, [router.isReady]);
- // Jika Solr index ditemukan, siapkan parameter pencarian
useEffect(() => {
if (result) {
- const fq = `category_parent_ids:${result.category_id_i} AND manufacture_id_i:${result.brand_id_i}`;
- const q = keyword || '*:*'; // keyword dari URL
+ let fqParts = [];
+
+ if (result.category_id_i) {
+ fqParts.push(`category_parent_ids:${result.category_id_i}`);
+ }
+
+ if (result.brand_id_i) {
+ fqParts.push(`manufacture_id_i:${result.brand_id_i}`);
+ }
+
+ const fq = fqParts.join(' AND ');
+ const q = keyword || '*:*';
+
console.log('SOLR QUERY:', { q, fq });
- setQuery({ fq, q });
+
+ setQuery({
+ fq,
+ q,
+ from: 'searchkey',
+ });
}
}, [result, keyword]);
- if (!result) {
- return (
- <BasicLayout>
- <Seo title='Keyword tidak ditemukan' />
- <div className='container py-5'>
- <h2>Produk tidak ditemukan berdasarkan keyword</h2>
- </div>
- </BasicLayout>
- );
- }
+ // if (!result) {
+ // return (
+ // <BasicLayout>
+ // <Seo title='Keyword tidak ditemukan' />
+ // <div className='container py-5'>
+ // <h2>Produk tidak ditemukan berdasarkan keyword</h2>
+ // </div>
+ // </BasicLayout>
+ // );
+ // }
return (
<BasicLayout>
@@ -83,7 +98,12 @@ export default function KeywordPage() {
router.asPath.split('?')[0]
}`}
/>
- {query && <ProductSearch query={query} prefixUrl={`${router.asPath}`} />}
+ {query && (
+ <ProductSearch
+ query={{ ...query, from: 'searchkey' }}
+ prefixUrl={router.asPath}
+ />
+ )}
</BasicLayout>
);
}