![]() Release status: stable |
|
---|---|
Implementation | Parser function |
Description | Adds a parser function to search, format and display search results in wiki pages |
Author(s) | Sophivorustalk |
Latest version | 1.2 (2022-03-29) |
MediaWiki | 1.39+ |
PHP | 7.4+ |
Database changes | No |
License | GNU General Public License 3.0 or later |
Download | Download extension Git [?]: |
Example | |
Hooks used
|
|
Translate the SearchParserFunction extension if it is available at translatewiki.net | |
The SearchParserFunction extension adds a parser function to search, format and display search results in wiki pages.
Installation
- Download and place the file(s) in a directory called
SearchParserFunction
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php
wfLoadExtension( 'SearchParserFunction' );
file: Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Usage
Basic usage
{{#search:foo}}
This will search for pages that contain "foo" and return the results as a list of links, like so:
- Foo
- Bar
- Baz
You can use all available search operators. For example, if you're using CirrusSearch:
{{#search:foo incategory:Bar linksto:Baz}}
See Help:CirrusSearch for all available search operators (or Help:Searching if you're not using CirrusSearch).
Note! The current page will be excluded from the search results.
Parameters
#search calls the Search API internally, so most of the parameters correspond to the API parameters (but without the "sr" prefix). Read the Search API documentation for more.
namespace
- Namespace to search, defaults to 0 (see namespace constants). Separate multiple values with commas.limit
- Max number of results, either an integer or 'max', defaults to 10.offset
- Number of results to skip, defaults to 0, useful to access results beyond the 'max' limit.profile
- Ranking algorithm to use, defaults to let the engine decide.what
- Type of search to perform, either 'text', 'title' or 'nearmatch', defaults to 'text'.info
- Metadata to return, defaults to all. Separate multiple values with commas.prop
- Properties to return, defaults to all. Separate multiple values with commas.interwiki
- Include interwiki results in the search, if available.rewrites
- Enable internal query rewriting, for example to correct spelling mistakes.sort
- Sorting criteria, defaults to 'relevance'.format
- Format of the search results, defaults to 'list' (see below for more).
For example, to get the name of the latest file that has "foo" in the title:
{{#search: foo | namespace = 6 | limit = 1 | what = title | sort = create_timestamp_asc | format = plain }}
Formats
List
Returns an unordered list (<ul>) of search results, linked to their pages. For example:
- Foo
- Bar
- Baz
Count
Returns the total number of search results as a plain number.
Plain
Returns a comma-separated list of plain titles, for example:
Foo, Bar, Baz
This format is designed for further processing. For example, using the #arraymap function of Extension:PageForms:
{{#arraymap: {{#search:foo}} | , | @ | [[@]] | <br> }}
This would output the search results one below the other and linked to their pages, like so:
Foo
Bar
Baz
If some of the titles contain commas, you can change the separator like so:
{{#search:foo|separator=;}}
JSON
Returns a JSON object for further processing, for example in a Lua module.
Note that this format returns the entire output from the Search API, not just the search results.
Template
Returns the search results wrapped in a template. All search result properties are passed on to the template and may be used or ignored.
For example, if a template named "Search result" contained the following:
<div style="border: 1px solid #aaa; border-radius: 10px; margin: 1em 0; padding: 1em; max-width: 600px;"> <big>[[{{{title}}}]]</big> <p>{{{snippet}}}</p> </div>
Then a query like the following:
{{#search: foo | format = template | template = Search result }}
Would output the following:
Foo
Foo is a generic term widely used to refer to any computer entity whose name is unknown or does not want to be expressed.
Bar
Bar is also a generic term widely used to refer to any computer entity whose name is unknown or does not want to be expressed.
Baz
Baz is yet another generic term widely used to refer to any computer entity whose name is unknown or does not want to be expressed.
See the Search API documentation for the full list of properties.
Hooks
SearchParserFunctionQuery
Use this hook to customize the query to the Search API.
SearchParserFunctionOutput
Use this hook to add or modify search result formats.
See also
- Extension:SemanticMediaWiki - Much more sophisticated and powerful, but also much more complicated and difficult to maintain. #ask queries can do much than #search can't, but #search can also do some things that #ask can't, such as simple full-text search.
- Extension:DynamicPageList - List pages by category and other criteria
- Appropedia:Template:Search results - Real use case of this extension