API:Prefixsearch
Appearance
From mediawiki.org
Languages:
This page is part of the MediaWiki Action API documentation.
MediaWiki Action API |
---|
Basics |
Authentication |
Accounts and Users |
Page Operations |
|
Search |
Developer Utilities |
Tutorials |
v · d · e |
API documentation
[edit ] The following documentation is the output of Special:ApiHelp/query+prefixsearch , automatically generated by the pre-release version of MediaWiki that is running on this site (MediaWiki.org).
list=prefixsearch (ps)
- This module requires read rights.
- This module can be used as a generator.
- Source: MediaWiki
- License: GPL-2.0-or-later
Perform a prefix search for page titles.
Despite the similarity in names, this module is not intended to be equivalent to Special:PrefixIndex; for that, see action=query&list=allpages with the apprefix parameter. The purpose of this module is similar to action=opensearch : to take user input and provide the best-matching titles. Depending on the search engine backend, this might include typo correction, redirect avoidance, or other heuristics.
Specific parameters:
Other general parameters are available.
- pssearch
Search string.
- This parameter is required.
- psnamespace
Namespaces to search. Ignored if pssearch begins with a valid namespace prefix.
- Values (separate with | or alternative): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 90, 91, 92, 93, 100, 101, 102, 103, 104, 105, 106, 107, 710, 711, 828, 829, 1198, 1199, 2600, 5500, 5501
- To specify all values, use *.
- Default: 0
- pslimit
Maximum number of results to return.
- Type: integer or max
- The value must be between 1 and 500.
- Default: 10
- psoffset
When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.
- Type: integer
- The value must be no less than 0.
- Default: 0
- psprofile
Search profile to use.
- strict
- Strict profile with few punctuation characters removed but diacritics and stress marks are kept.
- normal
- Few punctuation characters, some diacritics and stopwords removed.
- normal-subphrases
- Few punctuation characters, some diacritics and stopwords removed. It will match also subphrases (can be subphrases or subpages depending on internal wiki configuration).
- fuzzy
- Similar to normal with typo correction (two typos supported).
- fast-fuzzy
- Experimental fuzzy profile (may be removed at any time)
- fuzzy-subphrases
- Similar to normal with typo correction (two typos supported). It will match also subphrases (can be subphrases or subpages depending on internal wiki configuration).
- classic
- Classic prefix, few punctuation characters and some diacritics removed.
- engine_autoselect
- Let the search engine decide on the best profile to use.
- One of the following values: classic, engine_autoselect, fast-fuzzy, fuzzy, fuzzy-subphrases, normal, normal-subphrases, strict
- Default: engine_autoselect
Example:
- Search for page titles beginning with meaning.
- api.php?action=query&list=prefixsearch&pssearch=meaning [open in sandbox]
Example
[edit ]GET request
[edit ]Response
[edit ]{ "batchcomplete":"", "continue":{ "psoffset":10, "continue":"-||" }, "query":{ "prefixsearch":[ { "ns":0, "title":"Star Wars", "pageid":26678 }, { "ns":0, "title":"Star Wars: The Last Jedi", "pageid":43910621 }, { "ns":0, "title":"Star Wars: The Force Awakens", "pageid":14723194 }, { "ns":0, "title":"Star Wars (film)", "pageid":52549 } ... ] } }
Sample code
[edit ]Python
[edit ]#!/usr/bin/python3 """ prefixsearch.py MediaWiki API Demos Demo of `Prefixsearch` module: Perform a prefix search for page titles MIT License """ import requests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" PARAMS = { "action": "query", "format": "json", "list": "prefixsearch", "pssearch": "Star Wars" } R = S.get(url=URL, params=PARAMS) DATA = R.json() PAGES = DATA['query']['prefixsearch'] for page in PAGES: print(page["title"])
PHP
[edit ]<?php /* prefixsearch.php MediaWiki API Demos Demo of `Prefixsearch` module: Perform a prefix search for page titles MIT License */ $endPoint = "https://en.wikipedia.org/w/api.php"; $params = [ "action" => "query", "list" => "prefixsearch", "pssearch" => "Star Wars", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); foreach( $result["query"]["prefixsearch"] as $page ) { echo( $page["title"] . "\n" ); }
JavaScript
[edit ]/* prefixsearch.js MediaWiki API Demos Demo of `Prefixsearch` module: Perform a prefix search for page titles MIT License */ varurl="https://en.wikipedia.org/w/api.php"; varparams={ action:"query", list:"prefixsearch", pssearch:"Star Wars", format:"json" }; url=url+"?origin=*"; Object.keys(params).forEach(function(key){url+="&"+key+"="+params[key];}); fetch(url) .then(function(response){returnresponse.json();}) .then(function(response){ varpages=response.query.prefixsearch; for(varpageinpages){ console.log(pages[page].title); } }) .catch(function(error){console.log(error);});
MediaWiki JS
[edit ]/* prefixsearch.js MediaWiki API Demos Demo of `Prefixsearch` module: Perform a prefix search for page titles MIT License */ varparams={ action:'query', list:'prefixsearch', pssearch:'Star Wars', format:'json' }, api=newmw.Api(); api.get(params).done(function(data){ varpages=data.query.prefixsearch, page; for(pageinpages){ console.log(pages[page].title); } });
Possible errors
[edit ]Code | Info |
---|---|
nopssearch | The pssearch parameter must be set. |