diff --git a/client/db/index.jsx b/client/db/index.jsx
index 107e3c2ef..7a0e6a63d 100644
--- a/client/db/index.jsx
+++ b/client/db/index.jsx
@@ -305,7 +305,7 @@ function QueryForm () {
{ setMaxReturnLength(event.target.value); }} />
- { setSetName(event.target.value); }} />
+ { setSetName(event.target.value); }} />
diff --git a/database/qbreader/get-query.js b/database/qbreader/get-query.js
index 0695d2dba..16fdf4496 100644
--- a/database/qbreader/get-query.js
+++ b/database/qbreader/get-query.js
@@ -272,7 +272,13 @@ function buildQueryAggregation ({ query, difficulties, categories, subcategories
}
if (setName) {
- query['set.name'] = setName;
+ // setName is now an array after being split by commas
+ if (Array.isArray(setName)) {
+ query['set.name'] = { $in: setName.map(name => new RegExp(name, 'i')) };
+ } else {
+ // Backward compatibility: if setName is a string (shouldn't happen after API route change)
+ query['set.name'] = { $regex: setName, $options: 'i' };
+ }
}
if (minYear && maxYear) {
diff --git a/routes/api/query.js b/routes/api/query.js
index 60835396b..d2968dee3 100644
--- a/routes/api/query.js
+++ b/routes/api/query.js
@@ -38,6 +38,10 @@ router.get('/', async (req, res) => {
req.query.subcategories = req.query.subcategories.split(',');
}
+ if (req.query.setName) {
+ req.query.setName = req.query.setName.split(',').map(s => s.trim());
+ }
+
if (!req.query.tossupPagination) {
req.query.tossupPagination = 1;
}