Reduce maximum result size of XWiki search_pages

This is only done to improve worst-case latency, because
we perform one additional request per result.

Local testing showed a latency above 1000ms for 50 results
and ~500ms for 20 results. I'd expect real world scenarios to
be slightly worse, because of higher network latency.
This commit is contained in:
Jan Sandbrink
2026-06-05 09:40:39 +02:00
parent 1599bde011
commit f466dd3832
6 changed files with 41 additions and 39 deletions
@@ -36,7 +36,9 @@ module Wikis
class SearchPages < BaseQuery
include Concerns::XWikiQuery
MAXIMUM_RESULTS = 50
# Limiting result size rather strictly, because each result will cause another HTTP call to XWiki, this does not
# scale well. A stricter limit improves the worst case latency.
MAXIMUM_RESULTS = 20
def call(input_data:, auth_strategy:)
query = { q: "\"#{escape_quotes input_data.query}\"", number: MAXIMUM_RESULTS }
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: https://xwiki.local/rest/wikis/query?number=50&q=%22Test%20Page%20for%20RSpec%22
uri: https://xwiki.local/rest/wikis/query?number=20&q=%22Test%20Page%20for%20RSpec%22
body:
encoding: US-ASCII
string: ''
@@ -27,9 +27,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:19 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=EF2A09F6E0681B4B0B3E44D639CB89D9; Path=/; HttpOnly
- JSESSIONID=86BECC608B1C5FD09A32A74836CAEA4E; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -42,8 +42,8 @@ http_interactions:
encoding: UTF-8
string: '{"links":[],"searchResults":[{"links":[{"href":"https://xwiki.local/rest/wikis/xwiki/spaces/Test%20Page/pages/WebHome","rel":"http://www.xwiki.org/rel/page","type":null,"hrefLang":null}],"type":"page","id":"xwiki:Test
Page.WebHome","pageFullName":"Test Page.WebHome","title":"Test Page for RSpec","wiki":"xwiki","space":"Test
Page","pageName":"WebHome","modified":1780386902000,"author":"xwiki:XWiki.admin","authorName":null,"version":"4.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":32.03692,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 06:39:19 GMT
Page","pageName":"WebHome","modified":1780386902000,"author":"xwiki:XWiki.admin","authorName":null,"version":"4.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":36.06842,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
- request:
method: put
uri: https://xwiki.local/rest/openproject/documents?docRef=xwiki:Test%20Page.WebHome
@@ -75,9 +75,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:19 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=CD75D58F42FA2FF29480F0AA679975CB; Path=/; HttpOnly
- JSESSIONID=D0C7401B4A9ADC6FF35E556801B050B3; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -94,5 +94,5 @@ http_interactions:
URL Shortener.","content":"This is a test page that I created with my own
hands.","clazz":null,"objects":null,"attachments":null,"hierarchy":{"items":[{"label":"xwiki","name":"xwiki","type":"wiki","url":"https://xwiki.local/bin/view/Main/"},{"label":"Test
Page","name":"Test Page","type":"space","url":"https://xwiki.local/bin/view/Test%20Page/"},{"label":"WebHome","name":"WebHome","type":"document","url":"https://xwiki.local/bin/view/Test%20Page/"}]},"rights":[],"renderedContent":null}'
recorded_at: Fri, 05 Jun 2026 06:39:19 GMT
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
recorded_with: VCR 6.4.0
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: https://xwiki.local/rest/wikis/query?number=50&q=%22A%20page%20that%20does%20not%20exist%22
uri: https://xwiki.local/rest/wikis/query?number=20&q=%22A%20page%20that%20does%20not%20exist%22
body:
encoding: US-ASCII
string: ''
@@ -27,9 +27,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:20 GMT
- Fri, 05 Jun 2026 08:53:31 GMT
Set-Cookie:
- JSESSIONID=D1B7C7CFA5520362BCB9E2DB63EFCE00; Path=/; HttpOnly
- JSESSIONID=732467DE0A76FD79B8958EC80B2E9BB2; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -41,5 +41,5 @@ http_interactions:
body:
encoding: UTF-8
string: '{"links":[],"searchResults":[],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 06:39:20 GMT
recorded_at: Fri, 05 Jun 2026 08:53:31 GMT
recorded_with: VCR 6.4.0
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: https://xwiki.local/rest/wikis/query?number=50&q=%22for%20RSpec%22
uri: https://xwiki.local/rest/wikis/query?number=20&q=%22for%20RSpec%22
body:
encoding: US-ASCII
string: ''
@@ -27,9 +27,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:19 GMT
- Fri, 05 Jun 2026 08:53:31 GMT
Set-Cookie:
- JSESSIONID=689FB3235B4E5A8C46683A1331BD9EB2; Path=/; HttpOnly
- JSESSIONID=61B575D9D2898F806A6569BC6F465501; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -42,8 +42,8 @@ http_interactions:
encoding: UTF-8
string: '{"links":[],"searchResults":[{"links":[{"href":"https://xwiki.local/rest/wikis/xwiki/spaces/Test%20Page/pages/WebHome","rel":"http://www.xwiki.org/rel/page","type":null,"hrefLang":null}],"type":"page","id":"xwiki:Test
Page.WebHome","pageFullName":"Test Page.WebHome","title":"Test Page for RSpec","wiki":"xwiki","space":"Test
Page","pageName":"WebHome","modified":1780386902000,"author":"xwiki:XWiki.admin","authorName":null,"version":"4.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":14.085169,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 06:39:19 GMT
Page","pageName":"WebHome","modified":1780386902000,"author":"xwiki:XWiki.admin","authorName":null,"version":"4.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":15.390617,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 08:53:31 GMT
- request:
method: put
uri: https://xwiki.local/rest/openproject/documents?docRef=xwiki:Test%20Page.WebHome
@@ -75,9 +75,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:19 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=41BB94B7774F3AAF5872EC50FF78C37B; Path=/; HttpOnly
- JSESSIONID=753A9D110C6DC9393E3350EA056BBC05; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -94,5 +94,5 @@ http_interactions:
URL Shortener.","content":"This is a test page that I created with my own
hands.","clazz":null,"objects":null,"attachments":null,"hierarchy":{"items":[{"label":"xwiki","name":"xwiki","type":"wiki","url":"https://xwiki.local/bin/view/Main/"},{"label":"Test
Page","name":"Test Page","type":"space","url":"https://xwiki.local/bin/view/Test%20Page/"},{"label":"WebHome","name":"WebHome","type":"document","url":"https://xwiki.local/bin/view/Test%20Page/"}]},"rights":[],"renderedContent":null}'
recorded_at: Fri, 05 Jun 2026 06:39:19 GMT
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
recorded_with: VCR 6.4.0
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: https://xwiki.local/rest/wikis/query?number=50&q=%22%5C%22Quoted%5C%22%20pages%20can%20be%20tricky%22
uri: https://xwiki.local/rest/wikis/query?number=20&q=%22%5C%22Quoted%5C%22%20pages%20can%20be%20tricky%22
body:
encoding: US-ASCII
string: ''
@@ -27,9 +27,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:20 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=A1B5B0EFF5FD5E7B4F6E4CB0D185B065; Path=/; HttpOnly
- JSESSIONID=0A832E95AF62319A728E2D94FF402FD2; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -37,13 +37,13 @@ http_interactions:
Xwiki-Version:
- 18.3.0
Content-Length:
- '893'
- '891'
body:
encoding: UTF-8
string: '{"links":[],"searchResults":[{"links":[{"href":"https://xwiki.local/rest/wikis/xwiki/spaces/%22Quoted%22%20pages%20can%20be%20tricky/pages/WebHome","rel":"http://www.xwiki.org/rel/page","type":null,"hrefLang":null}],"type":"page","id":"xwiki:\"Quoted\"
pages can be tricky.WebHome","pageFullName":"\"Quoted\" pages can be tricky.WebHome","title":"\"Quoted\"
pages can be tricky","wiki":"xwiki","space":"\"Quoted\" pages can be tricky","pageName":"WebHome","modified":1780387197000,"author":"xwiki:XWiki.admin","authorName":null,"version":"1.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":41.692856,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 06:39:20 GMT
pages can be tricky","wiki":"xwiki","space":"\"Quoted\" pages can be tricky","pageName":"WebHome","modified":1780387197000,"author":"xwiki:XWiki.admin","authorName":null,"version":"1.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":46.0744,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
- request:
method: put
uri: https://xwiki.local/rest/openproject/documents?docRef=xwiki:%22Quoted%22%20pages%20can%20be%20tricky.WebHome
@@ -75,9 +75,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:20 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=9F577E6A3744F626EDDD3668B5F9EE9D; Path=/; HttpOnly
- JSESSIONID=8074F7A06BEFB236927D7E9858A4D266; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -95,5 +95,5 @@ http_interactions:
URL Shortener.","content":"When the page title contains quotes, it''s harder
to exactly match their page title.","clazz":null,"objects":null,"attachments":null,"hierarchy":{"items":[{"label":"xwiki","name":"xwiki","type":"wiki","url":"https://xwiki.local/bin/view/Main/"},{"label":"\"Quoted\"
pages can be tricky","name":"\"Quoted\" pages can be tricky","type":"space","url":"https://xwiki.local/bin/view/%22Quoted%22%20pages%20can%20be%20tricky/"},{"label":"WebHome","name":"WebHome","type":"document","url":"https://xwiki.local/bin/view/%22Quoted%22%20pages%20can%20be%20tricky/"}]},"rights":[],"renderedContent":null}'
recorded_at: Fri, 05 Jun 2026 06:39:20 GMT
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
recorded_with: VCR 6.4.0
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: https://xwiki.local/rest/wikis/query?number=50&q=%22Quoted%20pages%20can%20be%20tricky%22
uri: https://xwiki.local/rest/wikis/query?number=20&q=%22Quoted%20pages%20can%20be%20tricky%22
body:
encoding: US-ASCII
string: ''
@@ -27,9 +27,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:20 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=B47446E1E06E6D2A73FC512CEAB8083D; Path=/; HttpOnly
- JSESSIONID=85EDC4821BCF449B0D29798F3AD7D750; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -37,13 +37,13 @@ http_interactions:
Xwiki-Version:
- 18.3.0
Content-Length:
- '893'
- '891'
body:
encoding: UTF-8
string: '{"links":[],"searchResults":[{"links":[{"href":"https://xwiki.local/rest/wikis/xwiki/spaces/%22Quoted%22%20pages%20can%20be%20tricky/pages/WebHome","rel":"http://www.xwiki.org/rel/page","type":null,"hrefLang":null}],"type":"page","id":"xwiki:\"Quoted\"
pages can be tricky.WebHome","pageFullName":"\"Quoted\" pages can be tricky.WebHome","title":"\"Quoted\"
pages can be tricky","wiki":"xwiki","space":"\"Quoted\" pages can be tricky","pageName":"WebHome","modified":1780387197000,"author":"xwiki:XWiki.admin","authorName":null,"version":"1.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":41.692856,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 06:39:20 GMT
pages can be tricky","wiki":"xwiki","space":"\"Quoted\" pages can be tricky","pageName":"WebHome","modified":1780387197000,"author":"xwiki:XWiki.admin","authorName":null,"version":"1.1","language":null,"className":null,"objectNumber":null,"filename":null,"score":46.0744,"object":null,"hierarchy":null}],"template":"https://xwiki.local/rest/?q={solrquery}(&number={number})(&start={start})(&orderField={fieldname}(&order={asc|desc}))(&distinct=1)(&prettyNames={false|true})(&wikis={wikis})(&className={classname})"}'
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
- request:
method: put
uri: https://xwiki.local/rest/openproject/documents?docRef=xwiki:%22Quoted%22%20pages%20can%20be%20tricky.WebHome
@@ -75,9 +75,9 @@ http_interactions:
Content-Type:
- application/json;charset=UTF-8
Date:
- Fri, 05 Jun 2026 06:39:20 GMT
- Fri, 05 Jun 2026 08:53:32 GMT
Set-Cookie:
- JSESSIONID=2B1297828F8D8887496627F7356421D5; Path=/; HttpOnly
- JSESSIONID=6C4E5F9B0CF3BAD764856C1C7DD0F8DD; Path=/; HttpOnly
Xwiki-Form-Token:
- ON8xsHlEpixyujzpUPNupg
Xwiki-User:
@@ -95,5 +95,5 @@ http_interactions:
URL Shortener.","content":"When the page title contains quotes, it''s harder
to exactly match their page title.","clazz":null,"objects":null,"attachments":null,"hierarchy":{"items":[{"label":"xwiki","name":"xwiki","type":"wiki","url":"https://xwiki.local/bin/view/Main/"},{"label":"\"Quoted\"
pages can be tricky","name":"\"Quoted\" pages can be tricky","type":"space","url":"https://xwiki.local/bin/view/%22Quoted%22%20pages%20can%20be%20tricky/"},{"label":"WebHome","name":"WebHome","type":"document","url":"https://xwiki.local/bin/view/%22Quoted%22%20pages%20can%20be%20tricky/"}]},"rights":[],"renderedContent":null}'
recorded_at: Fri, 05 Jun 2026 06:39:20 GMT
recorded_at: Fri, 05 Jun 2026 08:53:32 GMT
recorded_with: VCR 6.4.0