diff options
Diffstat (limited to 'src/pages/api/shop/search.js')
| -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 37cfa1bd..89d75cd0 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -35,11 +35,14 @@ export default async function handler(req, res) { try { let qCompare = q === '*' ? '*:*' : q; - // Sanitasi Query if (qCompare !== '*:*') { - // Kita escape, tapi biarkan stringnya bersih (jangan ditambah wildcard * manual) - // karena kita serahkan ke 'edismax' parser qCompare = escapeSolrQuery(qCompare); + qCompare = qCompare.split(/\s+/).map(term => { + if (term && !term.includes('*')) { + return term + '*'; + } + return term; + }).join(' '); } // [SOLUSI] Gunakan URLSearchParams untuk menyusun URL dengan aman @@ -59,8 +62,12 @@ export default async function handler(req, res) { // 3. display_name_s^1 : Cadangan params.append('qf', 'default_code_s^20 search_keywords_t^10 display_name_s^1'); - // Minimum Match 100% (Semua kata harus ada), ubah jika ingin lebih longgar - params.append('mm', '100%'); + const compareWords = qCompare.split(/\s+/).filter(w => w.length > 0); + let compareMm = '100%'; + if (compareWords.length >= 3) { + compareMm = '75%'; + } + params.append('mm', compareMm); if (group === 'false') { params.append('group', 'false'); |
