API:검색

From mediawiki.org
This page is a translated version of the page API:Search and the translation is 100% complete.
미디어위키 버전:
1.11

제목이나 문서 내용의 일치 여부로 검색하는 개선된 방식으로 불러오기(GET) 요청을 보냅니다.

API에 대한 설명


list=search (sr)

(main | query | search)
  • 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.

Specific parameters:
Other general parameters are available.
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, 486, 487, 710, 711, 828, 829, 1198, 1199, 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
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, user_random
Default: relevance

불러오기(GET) 요청


이 검색 API를 사용하는 쿼리문에는 UTF8 인코딩 항목이 빠져있습니다. 위의 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-23T07: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-19T17:30:59Z"
            }
            ...
        ]
    }
}

예제 코드

Python

#!/usr/bin/python3

"""
    search.py

    MediaWiki API Demos
    Demo of `Search` module: Search for a text or title

    MIT License
"""

import requests

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
*/

var url = "https://en.wikipedia.org/w/api.php"; 

var params = new URLSearchParams({
    action: "query",
    list: "search",
    srsearch: "Nelson Mandela",
    format: "json",
    origin: location.origin
});

fetch(`${url}?${params}`)
    .then(function(response){return response.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
*/

var params = {
		action: 'query',
		list: 'search',
		srsearch: 'Nelson Mandela',
		format: 'json'
	},
	api = new mw.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 is disabled.
search-title-disabled title search is disabled.
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 에서 예제 구문을 확인할 수 있습니다.

같이 보기