Jump to content

API:搜索

本頁使用了標題或全文手工轉換
本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page API:Search and the translation is 100% complete.
MediaWiki版本:
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, 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

GET請求

預設搜尋結果沒有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-title-disabled title搜尋已禁用。
search-error 發生搜尋錯誤

參數歷史

  • 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的維基媒體的維基上,有關搜尋語法的資訊,請參見說明:CirrusSearch

參閱