⚓ T389011 Phrase match operation in simple search
Page Menu
Phabricator
Create Task
Maniphest
T389011
Phrase match operation in simple search
Closed, Resolved
Public
13 Estimated Story Points
Actions
Edit Task
Edit Related Tasks...
Create Subtask
Edit Parent Tasks
Edit Subtasks
Merge Duplicates In
Close As Duplicate
Edit Related Objects...
Edit Commits
Edit Mocks
Mute Notifications
Protect as security issue
Assigned To
Ollie.Shotton_WMDE
Authored By
WMDE-leszek
Mar 16 2025, 7:33 PM
2025-03-16 19:33:37 (UTC+0)
Tags
Wikibase REST API (WPP)
(Done)
Story
Wikibase Reuse Team (Sprint 46)
(Done)
Referenced Files
None
Subscribers
Aklapper
Ifrahkhanyaree_WMDE
Ollie.Shotton_WMDE
WMDE-leszek
Description
"Phrase match", i.e. terms surrounded by quotes are to be found as an exact phrase
Example: Searching for "sweet potato" should give us search results that have those two terms in that order e.g. "sweet potato", "sweet potato pie", "purple sweet potato", but should NOT match them in any other order like e.g. in
Q36795753
Remarks:
phrase could be part of the query, i.e. the entire query does not have to be just a phrase
do not consider quote mark escaping for now
phrase matching being provided by making the search work like the existing Special:Search does is fine implementation route to take
Task breakdown Notes
maybe include an example in the OpenAPI document
try to manually create a query that includes a phrase match
avoid
query_string
and
simple_query_string
use
bool
match
or
match_phrase
instead
check if
QueryParser
result matches expectations or can be transformed into a working query
use
&cirrusDumpQueryAST
to any Special:Search results URL, in order to check what the AST looks like
ElasticSearch query will be in json format
check
InLabelSearchTest
for examples
modify
InLabelSearch
and
InLabelQuery
to construct the new ElasticSearch query
e2e test may have to be skipped in CI until ElasticSearch is available
Details
Related Changes in Gerrit:
Subject
Repo
Branch
Lines +/-
Update InLabelQuery to support AND, OR, NOT, and "phrase matching"
mediawiki/extensions/WikibaseCirrusSearch
master
+1 K
-139
Add logger to InLabelSearch
mediawiki/extensions/Wikibase
master
+2
-1
[WIP] Update InLabelQuery to support "phrase matching" using regex
mediawiki/extensions/WikibaseCirrusSearch
master
+58
-9
Customize query in gerrit
Related Objects
Search...
Task Graph
Mentions
Status
Subtype
Assigned
Task
Resolved
Ifrahkhanyaree_WMDE
T383126
[EPIC] Simple search
Resolved
Ollie.Shotton_WMDE
T389011
Phrase match operation in simple search
Mentioned In
T386230: Additional sophisticated functionality for simple search
Event Timeline
WMDE-leszek
created this task.
Mar 16 2025, 7:33 PM
2025-03-16 19:33:37 (UTC+0)
WMDE-leszek
mentioned this in
T386230: Additional sophisticated functionality for simple search
WMDE-leszek
moved this task from
Incoming tickets outside WPP
to
To polish
on the
Wikibase Reuse Team
board.
Mar 16 2025, 8:08 PM
2025-03-16 20:08:34 (UTC+0)
Ifrahkhanyaree_WMDE
moved this task from
Backlog
to
Next
on the
Wikibase REST API (WPP)
board.
Mar 20 2025, 8:49 AM
2025-03-20 08:49:34 (UTC+0)
Ifrahkhanyaree_WMDE
renamed this task from
Handle AND, OR, and phrase match operation in simple search
to
[TO CANCEL?] Handle AND, OR, and phrase match operation in simple search
Apr 8 2025, 11:54 AM
2025-04-08 11:54:10 (UTC+0)
Ifrahkhanyaree_WMDE
renamed this task from
[TO CANCEL?] Handle AND, OR, and phrase match operation in simple search
to
Phrase match operation in simple search
Apr 8 2025, 12:20 PM
2025-04-08 12:20:56 (UTC+0)
Ifrahkhanyaree_WMDE
updated the task description.
(Show Details)
Ifrahkhanyaree_WMDE
moved this task from
To polish
to
Polished
on the
Wikibase Reuse Team
board.
Jakob_WMDE
updated the task description.
(Show Details)
Apr 8 2025, 1:52 PM
2025-04-08 13:52:52 (UTC+0)
WMDE-leszek
updated the task description.
(Show Details)
Apr 10 2025, 10:03 AM
2025-04-10 10:03:36 (UTC+0)
WMDE-leszek
updated the task description.
(Show Details)
Apr 10 2025, 10:19 AM
2025-04-10 10:19:34 (UTC+0)
WMDE-leszek
set the point value for this task to
13
WMDE-leszek
moved this task from
Polished
to
Ready for planning
on the
Wikibase Reuse Team
board.
Ifrahkhanyaree_WMDE
moved this task from
Ready for planning
to
Sprint 43
on the
Wikibase Reuse Team
board.
Apr 15 2025, 10:18 AM
2025-04-15 10:18:46 (UTC+0)
Ifrahkhanyaree_WMDE
edited projects, added
Wikibase Reuse Team (Sprint 43)
; removed
Wikibase Reuse Team
Silvan_WMDE
updated the task description.
(Show Details)
Apr 16 2025, 10:06 AM
2025-04-16 10:06:49 (UTC+0)
Ifrahkhanyaree_WMDE
moved this task from
Next
to
Happening now
on the
Wikibase REST API (WPP)
board.
Apr 16 2025, 2:09 PM
2025-04-16 14:09:01 (UTC+0)
Ollie.Shotton_WMDE
subscribed.
Edited
Apr 16 2025, 3:11 PM
2025-04-16 15:11:46 (UTC+0)
Comment Actions
try to manualy create a query that includes a phrase match
The Elasticsearch query that is currently used was found by putting a breakpoint at the start of
Searcher::searchOne()
in the CirrusSearch extension and evaluting the followign expression:
json_encode
$search
->
getQuery
()->
toArray
()
current elasticsearch query
"query": {
"bool": {
"should": [
"bool": {
"filter": [
"match": {
"labels_all.plain": {
"query": "\"random label\"",
"operator": "and"
],
"should": [
"dis_max": {
"tie_breaker": 0,
"queries": [
"constant_score": {
"filter": {
"match": {
"labels.en.near_match": "\"random label\""
},
"boost": 2
}, {
"constant_score": {
"filter": {
"match": {
"labels.en.near_match_folded": "\"random label\""
},
"boost": 1.6
}, {
"constant_score": {
"filter": {
"match": {
"labels.en.plain": {
"query": "\"random label\"",
"operator": "and"
},
"boost": 1.1
}, {
"constant_score": {
"filter": {
"match": {
"labels_all.near_match_folded": "\"random label\""
},
"boost": 0.001
}, {
"constant_score": {
"filter": {
"match": {
"labels.en-x-piglatin.near_match": "\"random label\""
},
"boost": 1.71
}, {
"constant_score": {
"filter": {
"match": {
"labels.en-x-piglatin.near_match_folded": "\"random label\""
},
"boost": 1.1700000000000002
}, {
"constant_score": {
"filter": {
"match": {
"labels.en-x-piglatin.plain": {
"query": "\"random label\"",
"operator": "and"
},
"boost": 0.36000000000000004
}, {
"constant_score": {
"filter": {
"match": {
"labels.mul.near_match": "\"random label\""
},
"boost": 1.539
}, {
"constant_score": {
"filter": {
"match": {
"labels.mul.near_match_folded": "\"random label\""
},
"boost": 1.0530000000000002
}, {
"constant_score": {
"filter": {
"match": {
"labels.mul.plain": {
"query": "\"random label\"",
"operator": "and"
},
"boost": 0.32400000000000007
}, {
"term": {
"title.keyword": "\"RANDOM LABEL\""
],
"minimum_should_match": 1,
"filter": [
"term": {
"content_model": "wikibase-item"
},
"_source": [
"namespace",
"title",
"namespace_text",
"wiki",
"labels.en",
"descriptions.en",
"labels.en-x-piglatin",
"descriptions.en-x-piglatin",
"labels.mul",
"descriptions.mul"
],
"fields": [ ],
"highlight": {
"pre_tags": [ "" ],
"post_tags": [ "" ],
"fields": {
"title": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"matched_fields": [ "title.keyword" ]
},
"labels.en.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.en-x-piglatin.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.mul.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.*.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"size": 10,
"rescore": [
"window_size": 8192,
"query": {
"query_weight": 1,
"rescore_query_weight": 1,
"score_mode": "total",
"rescore_query": {
"function_score": {
"score_mode": "sum",
"functions": [
"script_score": {
"script": {
"source": "pow(doc['incoming_links'].value , 1) / ( pow(doc['incoming_links'].value, 1) + pow(100,1))",
"lang": "expression"
},
"weight": 0.6
}, {
"script_score": {
"script": {
"source": "pow(doc['sitelink_count'].value , 2) / ( pow(doc['sitelink_count'].value, 2) + pow(20,2))",
"lang": "expression"
},
"weight": 0.4
],
"stats": [ "wikibase-in-label" ]
replacing "match" with "match_phrase"
Taking the current query Elasticsearch query and replacing "match" with "match_phrase" resultsed in some failures about nt being able to load scripts but returned the expected Items (and no Items that contain "random" and "label" not as a phrase e.g. "random-test-label-6zuQlNLYop")
request body
"query": {
"bool": {
"should": [
"bool": {
"filter": [
"match_phrase": { "labels_all.plain": "random label" }
],
"should": [
"dis_max": {
"tie_breaker": 0,
"queries": [
"constant_score": {
"filter": {
"match_phrase": {
"labels.en.near_match": "random label"
},
"boost": 2
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en.near_match_folded": "random label"
},
"boost": 1.6
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.en.plain": "random label" }
},
"boost": 1.1
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels_all.near_match_folded": "random label"
},
"boost": 0.001
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en-x-piglatin.near_match": "random label"
},
"boost": 1.71
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en-x-piglatin.near_match_folded": "random label"
},
"boost": 1.1700000000000002
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.en-x-piglatin.plain": "random label" }
},
"boost": 0.36000000000000004
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.mul.near_match": "random label"
},
"boost": 1.539
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.mul.near_match_folded": "random label"
},
"boost": 1.0530000000000002
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.mul.plain": "random label" }
},
"boost": 0.32400000000000007
},
"term": {
"title.keyword": "random label"
],
"minimum_should_match": 1,
"filter": [
"term": {
"content_model": "wikibase-item"
},
"_source": [
"namespace",
"title",
"namespace_text",
"wiki",
"labels.en",
"descriptions.en",
"labels.en-x-piglatin",
"descriptions.en-x-piglatin",
"labels.mul",
"descriptions.mul"
],
"fields": [ ],
"highlight": {
"pre_tags": [ "" ],
"post_tags": [ "" ],
"fields": {
"title": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"matched_fields": [ "title.keyword" ]
},
"labels.en.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.en-x-piglatin.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.mul.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.*.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"size": 10,
"rescore": [
"window_size": 8192,
"query": {
"query_weight": 1,
"rescore_query_weight": 1,
"score_mode": "total",
"rescore_query": {
"function_score": {
"score_mode": "sum",
"functions": [
"script_score": {
"script": {
"source": "pow(doc['incoming_links'].value , 1) / ( pow(doc['incoming_links'].value, 1) + pow(100,1))",
"lang": "expression"
},
"weight": 0.6
}, {
"script_score": {
"script": {
"source": "pow(doc['sitelink_count'].value , 2) / ( pow(doc['sitelink_count'].value, 2) + pow(20,2))",
"lang": "expression"
},
"weight": 0.4
],
"stats": [ "wikibase-in-label" ]
response body
"took": 11,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 3,
"skipped": 0,
"failed": 2,
"failures": [
"shard": 0,
"index": "mw_cirrus_metastore_first",
"node": "yQxHvnFMTmaBPyr12T8xbg",
"reason": {
"type": "query_shard_exception",
"reason": "script_score: the script could not be loaded",
"index_uuid": "2V-dElSdTxamseWYm-oRUg",
"index": "mw_cirrus_metastore_first",
"caused_by": {
"type": "script_exception",
"reason": "link error",
"script_stack": [
"doc['incoming_links'].value",
" ^---- HERE"
],
"script": "pow(doc['incoming_links'].value , 1) / ( pow(doc['incoming_links'].value, 1) + pow(100,1))",
"lang": "expression",
"caused_by": {
"type": "parse_exception",
"reason": "Field [incoming_links] does not exist in mappings"
},
"shard": 0,
"index": "postgres_general",
"node": "yQxHvnFMTmaBPyr12T8xbg",
"reason": {
"type": "query_shard_exception",
"reason": "script_score: the script could not be loaded",
"index_uuid": "sbkjyZAZQGKfTTDskq_sJA",
"index": "postgres_general",
"caused_by": {
"type": "script_exception",
"reason": "link error",
"script_stack": [
"doc['sitelink_count'].value",
" ^---- HERE"
],
"script": "pow(doc['sitelink_count'].value , 2) / ( pow(doc['sitelink_count'].value, 2) + pow(20,2))",
"lang": "expression",
"caused_by": {
"type": "parse_exception",
"reason": "Field [sitelink_count] does not exist in mappings"
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 2.0,
"hits": [
"_index": "default_content_first",
"_type": "_doc",
"_id": "59270",
"_score": 2.0,
"_source": {
"namespace_text": "Item",
"wiki": "default",
"namespace": 120,
"title": "Q30629",
"labels": {
"en": [
"random label"
},
"highlight": {
"labels.en.plain": [
"0:0-6,7-12:12|random label"
},
"_index": "default_content_first",
"_type": "_doc",
"_id": "59271",
"_score": 1.1,
"_source": {
"namespace_text": "Item",
"wiki": "default",
"namespace": 120,
"title": "Q30630",
"labels": {
"en": [
"random-label-UM5jFZaxmN"
},
"highlight": {
"labels.en.plain": [
"0:0-6,7-12:23|random-label-UM5jFZaxmN"
removing the "rescore" part of the query
Taking the previous ES query and removing the "rescore" section returned the expected Items without any failures (and no Items that contain "random" and "label" not as a phrase e.g. "random-test-label-6zuQlNLYop")
request body
"query": {
"bool": {
"should": [
"bool": {
"filter": [
"match_phrase": { "labels_all.plain": "random label" }
],
"should": [
"dis_max": {
"tie_breaker": 0,
"queries": [
"constant_score": {
"filter": {
"match_phrase": {
"labels.en.near_match": "random label"
},
"boost": 2
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en.near_match_folded": "random label"
},
"boost": 1.6
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.en.plain": "random label" }
},
"boost": 1.1
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels_all.near_match_folded": "random label"
},
"boost": 0.001
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en-x-piglatin.near_match": "random label"
},
"boost": 1.71
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.en-x-piglatin.near_match_folded": "random label"
},
"boost": 1.1700000000000002
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.en-x-piglatin.plain": "random label" }
},
"boost": 0.36000000000000004
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.mul.near_match": "random label"
},
"boost": 1.539
}, {
"constant_score": {
"filter": {
"match_phrase": {
"labels.mul.near_match_folded": "random label"
},
"boost": 1.0530000000000002
}, {
"constant_score": {
"filter": {
"match_phrase": { "labels.mul.plain": "random label" }
},
"boost": 0.32400000000000007
},
"term": {
"title.keyword": "random label"
],
"minimum_should_match": 1,
"filter": [
"term": {
"content_model": "wikibase-item"
},
"_source": [
"namespace",
"title",
"namespace_text",
"wiki",
"labels.en",
"descriptions.en",
"labels.en-x-piglatin",
"descriptions.en-x-piglatin",
"labels.mul",
"descriptions.mul"
],
"fields": [ ],
"highlight": {
"pre_tags": [ "" ],
"post_tags": [ "" ],
"fields": {
"title": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"matched_fields": [ "title.keyword" ]
},
"labels.en.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.en-x-piglatin.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.mul.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"labels.*.plain": {
"type": "experimental",
"fragmenter": "none",
"number_of_fragments": 0,
"options": {
"skip_if_last_matched": true,
"return_snippets_and_offsets": true
},
"size": 10,
"stats": [ "wikibase-in-label" ]
response body
"took": 10,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 2.0,
"hits": [
"_index": "default_content_first",
"_type": "_doc",
"_id": "59270",
"_score": 2.0,
"_source": {
"namespace_text": "Item",
"wiki": "default",
"namespace": 120,
"title": "Q30629",
"labels": {
"en": [
"random label"
},
"highlight": {
"labels.en.plain": [
"0:0-6,7-12:12|random label"
},
"_index": "default_content_first",
"_type": "_doc",
"_id": "59271",
"_score": 1.1,
"_source": {
"namespace_text": "Item",
"wiki": "default",
"namespace": 120,
"title": "Q30630",
"labels": {
"en": [
"random-label-UM5jFZaxmN"
},
"highlight": {
"labels.en.plain": [
"0:0-6,7-12:23|random-label-UM5jFZaxmN"
Ollie.Shotton_WMDE
moved this task from
To Do
to
Doing
on the
Wikibase Reuse Team (Sprint 43)
board.
Apr 16 2025, 3:36 PM
2025-04-16 15:36:23 (UTC+0)
gerritbot
added a comment.
Apr 28 2025, 9:46 AM
2025-04-28 09:46:19 (UTC+0)
Comment Actions
Change #1139130 had a related patch set uploaded (by Ollie Shotton; author: Ollie Shotton):
[mediawiki/extensions/WikibaseCirrusSearch@master] [WIP] Update InLabelQuery to support phrase matching
gerritbot
added a project:
Patch-For-Review
Apr 28 2025, 9:46 AM
2025-04-28 09:46:20 (UTC+0)
gerritbot
added a comment.
Apr 28 2025, 2:01 PM
2025-04-28 14:01:22 (UTC+0)
Comment Actions
Change #1139479 had a related patch set uploaded (by Ollie Shotton; author: Ollie Shotton):
[mediawiki/extensions/WikibaseCirrusSearch@master] [WIP] Update InLabelQuery to support "phrase matching" using regex
Ollie.Shotton_WMDE
edited projects, added
Wikibase Reuse Team (Sprint 44)
; removed
Wikibase Reuse Team (Sprint 43)
Apr 29 2025, 10:05 AM
2025-04-29 10:05:49 (UTC+0)
Ollie.Shotton_WMDE
moved this task from
To Do
to
Doing
on the
Wikibase Reuse Team (Sprint 44)
board.
gerritbot
added a comment.
May 1 2025, 8:22 AM
2025-05-01 08:22:42 (UTC+0)
Comment Actions
Change #1140477 had a related patch set uploaded (by Ollie Shotton; author: Ollie Shotton):
[mediawiki/extensions/Wikibase@master] Add logger to InLabelSearch
gerritbot
added a comment.
May 1 2025, 8:29 AM
2025-05-01 08:29:10 (UTC+0)
Comment Actions
Change #1139479
abandoned
by Ollie Shotton:
[mediawiki/extensions/WikibaseCirrusSearch@master] [WIP] Update InLabelQuery to support "phrase matching" using regex
Reason:
in favour of If01143b9f29c81f9f6599c82ebe6e6b15b3a6681
Ifrahkhanyaree_WMDE
edited projects, added
Wikibase Reuse Team (Sprint 45)
; removed
Wikibase Reuse Team (Sprint 44)
May 13 2025, 10:55 AM
2025-05-13 10:55:56 (UTC+0)
Ifrahkhanyaree_WMDE
moved this task from
To Do
to
Doing
on the
Wikibase Reuse Team (Sprint 45)
board.
Ollie.Shotton_WMDE
claimed this task.
May 19 2025, 9:03 AM
2025-05-19 09:03:57 (UTC+0)
Ollie.Shotton_WMDE
moved this task from
Doing
to
Peer Review
on the
Wikibase Reuse Team (Sprint 45)
board.
gerritbot
added a comment.
May 21 2025, 11:08 PM
2025-05-21 23:08:07 (UTC+0)
Comment Actions
Change #1140477
abandoned
by Ollie Shotton:
[mediawiki/extensions/Wikibase@master] Add logger to InLabelSearch
WMDE-leszek
edited projects, added
Wikibase Reuse Team (Sprint 46)
; removed
Wikibase Reuse Team (Sprint 45)
May 27 2025, 10:35 AM
2025-05-27 10:35:08 (UTC+0)
WMDE-leszek
moved this task from
To Do
to
Peer Review
on the
Wikibase Reuse Team (Sprint 46)
board.
gerritbot
added a comment.
May 27 2025, 3:24 PM
2025-05-27 15:24:53 (UTC+0)
Comment Actions
Change #1139130
merged
by jenkins-bot:
[mediawiki/extensions/WikibaseCirrusSearch@master] Update InLabelQuery to support AND, OR, NOT, and "phrase matching"
Maintenance_bot
removed a project:
Patch-For-Review
May 27 2025, 3:30 PM
2025-05-27 15:30:39 (UTC+0)
Ollie.Shotton_WMDE
moved this task from
Peer Review
to
Product Verification
on the
Wikibase Reuse Team (Sprint 46)
board.
May 28 2025, 8:50 AM
2025-05-28 08:50:20 (UTC+0)
Ifrahkhanyaree_WMDE
moved this task from
Product Verification
to
Done
on the
Wikibase Reuse Team (Sprint 46)
board.
Jun 3 2025, 7:10 AM
2025-06-03 07:10:32 (UTC+0)
Ifrahkhanyaree_WMDE
closed this task as
Resolved
Jun 10 2025, 10:40 AM
2025-06-10 10:40:38 (UTC+0)
Ifrahkhanyaree_WMDE
moved this task from
Happening now
to
Done
on the
Wikibase REST API (WPP)
board.
Jun 25 2025, 1:28 PM
2025-06-25 13:28:12 (UTC+0)
Log In to Comment
Content licensed under Creative Commons Attribution-ShareAlike (CC BY-SA) 4.0 unless otherwise noted; code licensed under GNU General Public License (GPL) 2.0 or later and other open source licenses. By using this site, you agree to the Terms of Use, Privacy Policy, and Code of Conduct.
Wikimedia Foundation
Code of Conduct
Disclaimer
CC-BY-SA
GPL
Credits
US