MediaWiki  master
SearchMySQL Class Reference

Search engine hook for MySQL. More...

Inheritance diagram for SearchMySQL:
Collaboration diagram for SearchMySQL:

Public Member Functions

 delete ( $id, $title)
 Delete an indexed page Title should be pre-processed. More...
 
 legalSearchChars ( $type=self::CHARS_ALL)
 Get chars legal for search. More...
 
 normalizeText ( $string)
 Converts some characters for MySQL's indexing to grok it correctly, and pads short words to overcome limitations. More...
 
 supports ( $feature)
 
 update ( $id, $title, $text)
 Create or update the search index record for the given page. More...
 
 updateTitle ( $id, $title)
 Update a search index record's title only. More...
 
- Public Member Functions inherited from SearchDatabase
 __construct (ILoadBalancer $lb)
 
 doSearchText ( $term)
 
 doSearchTitle ( $term)
 
- Public Member Functions inherited from SearchEngine
 augmentSearchResults (ISearchResultSet $resultSet)
 Augment search results with extra data. More...
 
 completionSearch ( $search)
 Perform a completion search. More...
 
 completionSearchWithVariants ( $search)
 Perform a completion search with variants. More...
 
 defaultPrefixSearch ( $search)
 Simple prefix search for subpages. More...
 
 extractTitles (SearchSuggestionSet $completionResults)
 Extract titles from completion results. More...
 
 getFeatureData ( $feature)
 Way to retrieve custom data set by setFeatureData or by the engine itself. More...
 
 getNearMatcher (Config $config)
 Get service class to finding near matches. More...
 
 getProfiles ( $profileType, User $user=null)
 Get a list of supported profiles. More...
 
 getSearchIndexFields ()
 Get fields for search index. More...
 
 getSort ()
 Get the sort direction of the search results. More...
 
 getTextFromContent (Title $t, Content $c=null)
 Get the raw text for updating the index from a content object Nicer search backends could possibly do something cooler than just returning raw text. More...
 
 getValidSorts ()
 Get the valid sort directions. More...
 
 makeSearchFieldMapping ( $name, $type)
 Create a search field definition. More...
 
 replacePrefixes ( $query)
 Parse some common prefixes: all (search everything) or namespace names and set the list of namespaces of this class accordingly. More...
 
 searchArchiveTitle ( $term)
 Perform a title search in the article archive. More...
 
 searchText ( $term)
 Perform a full text search query and return a result set. More...
 
 searchTitle ( $term)
 Perform a title-only search query and return a result set. More...
 
 setFeatureData ( $feature, $data)
 Way to pass custom data for engines. More...
 
 setHookContainer (HookContainer $hookContainer)
 
 setLimitOffset ( $limit, $offset=0)
 Set the maximum number of results to return and how many to skip before returning the first. More...
 
 setNamespaces ( $namespaces)
 Set which namespaces the search should include. More...
 
 setShowSuggestion ( $showSuggestion)
 Set whether the searcher should try to build a suggestion. More...
 
 setSort ( $sort)
 Set the sort direction of the search results. More...
 
 textAlreadyUpdatedForIndex ()
 If an implementation of SearchEngine handles all of its own text processing in getTextFromContent() and doesn't require SearchUpdate::updateText()'s rather silly handling, it should return true here instead. More...
 

Protected Member Functions

 doSearchTextInDB ( $term)
 Perform a full text search query and return a result set. More...
 
 doSearchTitleInDB ( $term)
 Perform a title-only search query and return a result set. More...
 
 limitResult (&$query)
 Add limit options. More...
 
 minSearchLength ()
 Check MySQL server's ft_min_word_len setting so we know if we need to pad short words... More...
 
 queryFeatures (&$query)
 Add special conditions. More...
 
 searchInternal ( $term, $fulltext)
 
 stripForSearchCallback ( $matches)
 Armor a case-folded UTF-8 string to get through MySQL's fulltext search without being mucked up by funny charset settings or anything else of the sort. More...
 
- Protected Member Functions inherited from SearchDatabase
 extractNamespacePrefix ( $term)
 Extract the optional namespace prefix and set self::namespaces accordingly and return the query string. More...
 
 filter ( $text)
 Return a 'cleaned up' search string. More...
 
- Protected Member Functions inherited from SearchEngine
 completionSearchBackend ( $search)
 Perform a completion search. More...
 
 completionSearchBackendOverfetch ( $search)
 Perform an overfetch of completion search results. More...
 
 doSearchArchiveTitle ( $term)
 Perform a title search in the article archive. More...
 
 getHookContainer ()
 Get a HookContainer, for running extension hooks or for hook metadata. More...
 
 getHookRunner ()
 Get a HookRunner for running core hooks. More...
 
 normalizeNamespaces ( $search)
 Makes search simple string if it was namespaced. More...
 
 processCompletionResults ( $search, SearchSuggestionSet $suggestions)
 Process completion search results. More...
 
 simplePrefixSearch ( $search)
 Call out to simple search backend. More...
 

Protected Attributes

 $strictMatching = true
 
- Protected Attributes inherited from SearchDatabase
IDatabase $db
 (backwards compatibility) More...
 
ILoadBalancer $lb
 
string[] $searchTerms = []
 search terms More...
 
- Protected Attributes inherited from SearchEngine
array $features = []
 Feature values. More...
 
int $limit = 10
 
int $offset = 0
 
string[] $searchTerms = []
 
bool $showSuggestion = true
 
const CHARS_ALL = 1
 Integer flag for legalSearchChars: includes all chars allowed in a search query. More...
 
const CHARS_NO_SYNTAX = 2
 Integer flag for legalSearchChars: includes all chars allowed in a search term. More...
 

Private Member Functions

 getCountQuery ( $filteredTerm, $fulltext)
 
 getIndexField ( $fulltext)
 Picks which field to index on, depending on what type of query. More...
 
 getQuery ( $filteredTerm, $fulltext)
 Construct the SQL query to do the search. More...
 
 parseQuery ( $filteredText, $fulltext)
 Parse the user's query and transform it into two SQL fragments: a WHERE condition and an ORDER BY expression. More...
 
 queryMain (&$query, $filteredTerm, $fulltext)
 Get the base part of the search query. More...
 
 queryNamespaces (&$query)
 Add namespace conditions. More...
 
 regexTerm ( $string, $wildcard)
 

Static Private Attributes

static $mMinSearchLength
 

Additional Inherited Members

- Static Public Member Functions inherited from SearchEngine
static parseNamespacePrefixes ( $query, $withAllKeyword=true, $withPrefixSearchExtractNamespaceHook=false)
 Parse some common prefixes: all (search everything) or namespace names. More...
 
static userHighlightPrefs ()
 Find snippet highlight settings for all users. More...
 
- Public Attributes inherited from SearchEngine
int[] null $namespaces = [ NS_MAIN ]
 
string $prefix = ''
 
const COMPLETION_PROFILE_TYPE = 'completionSearchProfile'
 Profile type for completionSearch. More...
 
const DEFAULT_SORT = 'relevance'
 
const FT_QUERY_INDEP_PROFILE_TYPE = 'fulltextQueryIndepProfile'
 Profile type for query independent ranking features. More...
 
- Static Protected Member Functions inherited from SearchEngine
static defaultNearMatcher ()
 Get near matcher for default SearchEngine. More...
 

Detailed Description

Search engine hook for MySQL.

Definition at line 33 of file SearchMySQL.php.

Member Function Documentation

◆ delete()

SearchMySQL::delete (   $id,
  $title 
)

Delete an indexed page Title should be pre-processed.

Parameters
int$idPage id that was deleted
string$titleTitle of page that was deleted

Reimplemented from SearchEngine.

Definition at line 384 of file SearchMySQL.php.

References DB_PRIMARY.

◆ doSearchTextInDB()

SearchMySQL::doSearchTextInDB (   $term)
protected

Perform a full text search query and return a result set.

Parameters
string$termRaw search term
Returns
SqlSearchResultSet|null

Reimplemented from SearchDatabase.

Definition at line 171 of file SearchMySQL.php.

References searchInternal().

◆ doSearchTitleInDB()

SearchMySQL::doSearchTitleInDB (   $term)
protected

Perform a title-only search query and return a result set.

Parameters
string$termRaw search term
Returns
SqlSearchResultSet|null

Reimplemented from SearchDatabase.

Definition at line 181 of file SearchMySQL.php.

References searchInternal().

◆ getCountQuery()

SearchMySQL::getCountQuery (   $filteredTerm,
  $fulltext 
)
private
Since
1.18 (changed)
Parameters
string$filteredTerm
bool$fulltext
Returns
array

Definition at line 322 of file SearchMySQL.php.

References parseQuery(), queryFeatures(), and queryNamespaces().

Referenced by searchInternal().

◆ getIndexField()

SearchMySQL::getIndexField (   $fulltext)
private

Picks which field to index on, depending on what type of query.

Parameters
bool$fulltext
Returns
string

Definition at line 292 of file SearchMySQL.php.

Referenced by parseQuery().

◆ getQuery()

SearchMySQL::getQuery (   $filteredTerm,
  $fulltext 
)
private

Construct the SQL query to do the search.

The guts shoulds be constructed in queryMain()

Parameters
string$filteredTerm
bool$fulltext
Returns
array
Since
1.18 (changed)

Definition at line 270 of file SearchMySQL.php.

References limitResult(), queryFeatures(), queryMain(), and queryNamespaces().

Referenced by searchInternal().

◆ legalSearchChars()

SearchMySQL::legalSearchChars (   $type = self::CHARS_ALL)

Get chars legal for search.

Parameters
int$typetype of search chars (see self::CHARS_ALL and self::CHARS_NO_SYNTAX). Defaults to CHARS_ALL
Returns
string

Reimplemented from SearchEngine.

Definition at line 156 of file SearchMySQL.php.

References $type.

Referenced by parseQuery().

◆ limitResult()

SearchMySQL::limitResult ( $query)
protected

Add limit options.

Parameters
array&$query
Since
1.18

Definition at line 257 of file SearchMySQL.php.

References SearchEngine\$limit, and SearchEngine\$offset.

Referenced by getQuery().

◆ minSearchLength()

SearchMySQL::minSearchLength ( )
protected

Check MySQL server's ft_min_word_len setting so we know if we need to pad short words...

Returns
int

Definition at line 447 of file SearchMySQL.php.

References $dbr, $mMinSearchLength, and DB_REPLICA.

Referenced by normalizeText().

◆ normalizeText()

SearchMySQL::normalizeText (   $string)

Converts some characters for MySQL's indexing to grok it correctly, and pads short words to overcome limitations.

Parameters
string$string
Returns
mixed|string

Reimplemented from SearchEngine.

Definition at line 395 of file SearchMySQL.php.

References minSearchLength().

Referenced by parseQuery(), update(), and updateTitle().

◆ parseQuery()

SearchMySQL::parseQuery (   $filteredText,
  $fulltext 
)
private

Parse the user's query and transform it into two SQL fragments: a WHERE condition and an ORDER BY expression.

Parameters
string$filteredText
string$fulltext
Returns
array

Definition at line 47 of file SearchMySQL.php.

References $dbr, DB_REPLICA, getIndexField(), legalSearchChars(), normalizeText(), regexTerm(), and wfDebug().

Referenced by getCountQuery(), and queryMain().

◆ queryFeatures()

SearchMySQL::queryFeatures ( $query)
protected

Add special conditions.

Parameters
array&$query
Since
1.18

Definition at line 229 of file SearchMySQL.php.

References $dbr, and DB_REPLICA.

Referenced by getCountQuery(), and getQuery().

◆ queryMain()

SearchMySQL::queryMain ( $query,
  $filteredTerm,
  $fulltext 
)
private

Get the base part of the search query.

Parameters
array&$querySearch query array
string$filteredTerm
bool$fulltext
Since
1.18 (changed)

Definition at line 304 of file SearchMySQL.php.

References parseQuery().

Referenced by getQuery().

◆ queryNamespaces()

SearchMySQL::queryNamespaces ( $query)
private

Add namespace conditions.

Parameters
array&$query
Since
1.18 (changed)

Definition at line 243 of file SearchMySQL.php.

References SearchEngine\$namespaces.

Referenced by getCountQuery(), and getQuery().

◆ regexTerm()

SearchMySQL::regexTerm (   $string,
  $wildcard 
)
private

Definition at line 139 of file SearchMySQL.php.

Referenced by parseQuery().

◆ searchInternal()

SearchMySQL::searchInternal (   $term,
  $fulltext 
)
protected

Definition at line 185 of file SearchMySQL.php.

References $dbr, DB_REPLICA, SearchDatabase\filter(), getCountQuery(), and getQuery().

Referenced by doSearchTextInDB(), and doSearchTitleInDB().

◆ stripForSearchCallback()

SearchMySQL::stripForSearchCallback (   $matches)
protected

Armor a case-folded UTF-8 string to get through MySQL's fulltext search without being mucked up by funny charset settings or anything else of the sort.

Parameters
array$matches
Returns
string

Definition at line 437 of file SearchMySQL.php.

References $matches.

◆ supports()

SearchMySQL::supports (   $feature)
Since
1.18
Stability: stable
to override
Parameters
string$feature
Returns
bool

Reimplemented from SearchEngine.

Definition at line 215 of file SearchMySQL.php.

◆ update()

SearchMySQL::update (   $id,
  $title,
  $text 
)

Create or update the search index record for the given page.

Title and text should be pre-processed.

Parameters
int$id
string$title
string$text

Reimplemented from SearchEngine.

Definition at line 347 of file SearchMySQL.php.

References $title, DB_PRIMARY, and normalizeText().

◆ updateTitle()

SearchMySQL::updateTitle (   $id,
  $title 
)

Update a search index record's title only.

Title should be pre-processed.

Parameters
int$id
string$title

Reimplemented from SearchEngine.

Definition at line 368 of file SearchMySQL.php.

References $title, DB_PRIMARY, and normalizeText().

Member Data Documentation

◆ $mMinSearchLength

SearchMySQL::$mMinSearchLength
staticprivate

Definition at line 36 of file SearchMySQL.php.

Referenced by minSearchLength().

◆ $strictMatching

SearchMySQL::$strictMatching = true
protected

Definition at line 34 of file SearchMySQL.php.


The documentation for this class was generated from the following file: