diff --git a/packages/elastic/package.json b/packages/elastic/package.json index 2cf9545e..b30d7de5 100644 --- a/packages/elastic/package.json +++ b/packages/elastic/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/elastic-search", - "version": "1.0.3", + "version": "1.0.4", "main": "package.json", "repository": "https://github.com/hydro-dev/Hydro", "author": "undefined ", diff --git a/packages/elastic/script.ts b/packages/elastic/script.ts index 0e269e47..e6540122 100644 --- a/packages/elastic/script.ts +++ b/packages/elastic/script.ts @@ -32,8 +32,9 @@ bus.on('problem/del', async (domainId, docId) => { }); global.Hydro.lib.problemSearch = async (domainId, q, opts) => { + const allowedSize = system.get('elasic.indexSize'); const size = opts?.limit || system.get('pagination.problem'); - const from = opts?.skip || 0; + const from = Math.min(allowedSize - size, opts?.skip || 0); const union = await DomainModel.getUnion(domainId); const domainIds = [domainId, ...(union?.union || [])]; const res = await client.search({ diff --git a/packages/elastic/setting.yaml b/packages/elastic/setting.yaml index aea78588..f40c9cc1 100644 --- a/packages/elastic/setting.yaml +++ b/packages/elastic/setting.yaml @@ -1,2 +1,4 @@ url: value: http://127.0.0.1:9200 +indexSize: + value: 10000 \ No newline at end of file