API:검색
| 미디어위키 Action API |
|---|
| 기본 |
| 인증 |
| 계정과 사용자 |
| 문서 운영 방법 |
| 검색 |
| 개발자 유틸리티 |
| 튜토리얼 |
| v · d · e |
제목이나 문서 내용의 일치 여부로 검색하는 개선된 방식으로 불러오기(GET) 요청을 보냅니다.
API에 대한 설명
list=search (sr)
- This module requires read rights.
- This module can be used as a generator.
- Source: MediaWiki
- License: GPL-2.0-or-later
Perform a full text search.
- srsearch
Search for page titles or content matching this value. You can use the search string to invoke special search features, depending on what the wiki's search backend implements.
- This parameter is required.
- srnamespace
Search only within these namespaces.
- 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, 1728, 1729, 2600, 5500, 5501
- To specify all values, use *.
- Default: 0
- srlimit
How many total pages to return.
- Type: integer or max
- The value must be between 1 and 500.
- Default: 10
- sroffset
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
- srqiprofile
Query independent profile to use (affects ranking algorithm).
- classic
- Ranking based on the number of incoming links, some templates, page language and recency (templates/language/recency may not be activated on this wiki).
- classic_noboostlinks
- Ranking based on some templates, page language and recency when activated on this wiki.
- empty
- Ranking based solely on query dependent features (for debug only).
- wsum_inclinks
- Weighted sum based on incoming links
- wsum_inclinks_pv
- Weighted sum based on incoming links and weekly pageviews
- popular_inclinks_pv
- Ranking based primarily on page views
- popular_inclinks
- Ranking based primarily on incoming link counts
- engine_autoselect
- Let the search engine decide on the best profile to use.
- One of the following values: classic, classic_noboostlinks, empty, engine_autoselect, popular_inclinks, popular_inclinks_pv, wsum_inclinks, wsum_inclinks_pv
- Default: engine_autoselect
- srqdprofile
Query dependent profile to use (affects ranking algorithm).
- default
- (no description)
- perfield_builder
- (no description)
- perfield_builder_relaxed
- (no description)
- perfield_builder_title_filter
- (no description)
- engine_autoselect
- Let the search engine decide on the best profile to use.
- One of the following values: default, engine_autoselect, perfield_builder, perfield_builder_relaxed, perfield_builder_title_filter
- Default: engine_autoselect
- srwhat
Which type of search to perform.
- One of the following values: nearmatch, text, title
- srinfo
Which metadata to return.
- Values (separate with | or alternative): rewrittenquery, suggestion, totalhits
- Default: totalhits|suggestion|rewrittenquery
- srprop
Which properties to return:
- size
- Adds the size of the page in bytes.
- wordcount
- Adds the word count of the page.
- timestamp
- Adds the timestamp of when the page was last edited.
- snippet
- Adds a snippet of the page, with query term highlighting markup.
- titlesnippet
- Adds the page title, with query term highlighting markup.
- redirecttitle
- Adds the title of the matching redirect.
- redirectsnippet
- Adds the title of the matching redirect, with query term highlighting markup.
- sectiontitle
- Adds the title of the matching section.
- sectionsnippet
- Adds the title of the matching section, with query term highlighting markup.
- isfilematch
- Adds a boolean indicating if the search matched file content.
- categorysnippet
- Adds the matching category name, with query term highlighting markup.
- score
- Deprecated. Ignored.
- hasrelated
- Deprecated. Ignored.
- extensiondata
- Adds extra data generated by extensions.
- Values (separate with | or alternative): categorysnippet, extensiondata, isfilematch, redirectsnippet, redirecttitle, sectionsnippet, sectiontitle, size, snippet, timestamp, titlesnippet, wordcount, hasrelated, score
- Default: size|wordcount|timestamp|snippet
- srinterwiki
Include interwiki results in the search, if available.
- Type: boolean (details)
- srenablerewrites
Enable internal query rewriting. Some search backends can rewrite the query into another which is thought to provide better results, for instance by correcting spelling errors.
- Type: boolean (details)
- srsort
Set the sort order of returned results.
- One of the following values: create_timestamp_asc, create_timestamp_desc, incoming_links_asc, incoming_links_desc, just_match, last_edit_asc, last_edit_desc, none, random, relevance, title_natural_asc, title_natural_desc, user_random
- Default: relevance
- Search for meaning.
- api.php?action=query&list=search&srsearch=meaning [open in sandbox]
- Search texts for meaning.
- api.php?action=query&list=search&srwhat=text&srsearch=meaning [open in sandbox]
- Get page info about the pages returned for a search for meaning.
- api.php?action=query&generator=search&gsrsearch=meaning&prop=info [open in sandbox]
불러오기(GET) 요청
utf8을 다른 값을 넣으면 어떻게 되는지 확인해보세요.
응답
{ "batchcomplete": "", "continue": { "sroffset": 10, "continue": "-||" }, "query": { "searchinfo": { "totalhits": 5060 }, "search": [ { "ns": 0, "title": "Nelson Mandela", "pageid": 21492751, "size": 196026, "wordcount": 23664, "snippet": "<span class=\"searchmatch\">Nelson</span> Rolihlahla <span class=\"searchmatch\">Mandela</span> (/mænˈdɛlə/, Xhosa: [xoliɬaˈɬa <span class=\"searchmatch\">manˈdɛla</span>]; 18 July 1918 – 5 December 2013) was a South African anti-apartheid revolutionary,", "timestamp": "2018年07月23日T07:59:43Z" }, { "ns": 0, "title": "Death of Nelson Mandela", "pageid": 41284488, "size": 133513, "wordcount": 13512, "snippet": "On December 5, 2013, <span class=\"searchmatch\">Nelson</span> <span class=\"searchmatch\">Mandela</span>, the first President of South Africa to be elected in a fully representative democratic election, as well as the country's", "timestamp": "2018年07月19日T17:30:59Z" } ... ] } }
예제 코드
Python
#!/usr/bin/python3 """ search.py MediaWiki API Demos Demo of `Search` module: Search for a text or title MIT License """ importrequests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" SEARCHPAGE = "Nelson Mandela" PARAMS = { "action": "query", "format": "json", "list": "search", "srsearch": SEARCHPAGE } R = S.get(url=URL, params=PARAMS) DATA = R.json() if DATA['query']['search'][0]['title'] == SEARCHPAGE: print("Your search page '" + SEARCHPAGE + "' exists on English Wikipedia")
PHP
<?php /* search.php MediaWiki API Demos Demo of `Search` module: Search for a text or title MIT License */ $searchPage = "Nelson Mandela"; $endPoint = "https://en.wikipedia.org/w/api.php"; $params = [ "action" => "query", "list" => "search", "srsearch" => $searchPage, "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 ); if ($result['query']['search'][0]['title'] == $searchPage){ echo("Your search page '" . $searchPage . "' exists on English Wikipedia" . "\n" ); }
JavaScript
/* search.js MediaWiki API Demos Demo of `Search` module: Search for a text or title MIT License */ varurl="https://en.wikipedia.org/w/api.php"; varparams=newURLSearchParams({ action:"query", list:"search", srsearch:"Nelson Mandela", format:"json", origin:location.origin }); fetch(`${url}?${params}`) .then(function(response){returnresponse.json();}) .then(function(response){ if(response.query.search[0].title==="Nelson Mandela"){ console.log("Your search page 'Nelson Mandela' exists on English Wikipedia"); } }) .catch(function(error){console.log(error);});
MediaWiki JS
/* search.js MediaWiki API Demos Demo of `Search` module: Search for a text or title MIT License */ varparams={ action:'query', list:'search', srsearch:'Nelson Mandela', format:'json' }, api=newmw.Api(); api.get(params).done(function(data){ if(data.query.search[0].title==='Nelson Mandela'){ console.log("Your search page 'Nelson Mandela' exists on English Wikipedia"); } });
발생 가능한 오류들
| 코드 | 정보 |
|---|---|
| nosrsearch | srsearch 매개변수가 설정되어야 합니다. 1.17 버전 이하에서 파라미터로 검색할 때 발생하는 오류입니다.
|
| search-text-disabled | text 검색 기능이 비활성화되었습니다. |
| search-title-disabled | title 검색 기능이 비활성화되었습니다. |
| search-error | search error has occurred |
파라미터의 변경 역사
- v1.24: 에서
score,hasrelated가 더이상 사용되지 않게 됨 - v1.23:
- 에서
srredirects가 제거됨. 하지만 넘겨주기 검색은 여전히 유효함. - 에서
srinterwiki가 도입됨
- 에서
- v1.22: 에서
srbackend가 도입됨 - v1.17: 에서
nearmatch,score,titlesnippet,redirecttitle,redirectsnippet,sectiontitle,sectionsnippet,hasrelated가 도입됨 - v1.16: 에서
srinfo,srprop가 도입됨
추가 참고사항
- 사용하는 검색 백엔드 방식에 따라
srsearch의 인터프리트 결과는 다를 수 있습니다.CirrusSearch를 사용하는 위키미디어 위키에서는 Help:CirrusSearch 에서 예제 구문을 확인할 수 있습니다.