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, 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请求


默认搜索结果没有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的维基媒体维基上,有关搜索语法的信息,请参见Help:CirrusSearch

參閱