MediaWiki  master
SearchMySQL Class Reference

Search engine hook for MySQL 4+. 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)
 
 normalizeText ( $string)
 Converts some characters for MySQL's indexing to grok it correctly, and pads short words to overcome limitations. More...
 
 queryNamespaces (&$query)
 Add namespace conditions. 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 (SearchResultSet $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...
 
 delete ( $id, $title)
 Delete an indexed page Title should be pre-processed. 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...
 
 legalSearchChars ( $type=self::CHARS_ALL)
 Get chars legal for search. More...
 
 makeSearchFieldMapping ( $name, $type)
 Create a search field definition. More...
 
 normalizeText ( $string)
 When overridden in derived class, performs database-specific conversions on text to be used for searching or updating search index. 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...
 
 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...
 
 supports ( $feature)
 
 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...
 
 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...
 

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
 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...
 
 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...
 
 doSearchText ( $term)
 Perform a full text search query and return a result set. More...
 
 doSearchTitle ( $term)
 Perform a title-only search query and return a result set. 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
 

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...
 
 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 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...
 
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 4+.

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

Definition at line 378 of file SearchMySQL.php.

References DB_MASTER.

◆ doSearchTextInDB()

SearchMySQL::doSearchTextInDB (   $term)
protected

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

Parameters
string$termRaw search term
Returns
SqlSearchResultSet

Definition at line 168 of file SearchMySQL.php.

References $term, and searchInternal().

◆ doSearchTitleInDB()

SearchMySQL::doSearchTitleInDB (   $term)
protected

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

Parameters
string$termRaw search term
Returns
SqlSearchResultSet

Definition at line 178 of file SearchMySQL.php.

References $term, and searchInternal().

◆ getCountQuery()

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

Definition at line 319 of file SearchMySQL.php.

References $query, 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 289 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 267 of file SearchMySQL.php.

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

Referenced by searchInternal().

◆ legalSearchChars()

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

Definition at line 153 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 254 of file SearchMySQL.php.

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

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 441 of file SearchMySQL.php.

References $dbr, 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

Definition at line 389 of file SearchMySQL.php.

References $out, and 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, $term, as, DB_REPLICA, getIndexField(), legalSearchChars(), list, 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 226 of file SearchMySQL.php.

References $dbr, $query, $value, as, 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 301 of file SearchMySQL.php.

References $query, and parseQuery().

Referenced by getQuery().

◆ queryNamespaces()

SearchMySQL::queryNamespaces ( $query)

Add namespace conditions.

Parameters
array&$query
Since
1.18 (changed)

Definition at line 240 of file SearchMySQL.php.

References SearchEngine\$namespaces, $query, and namespaces.

Referenced by getCountQuery(), and getQuery().

◆ regexTerm()

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

Definition at line 136 of file SearchMySQL.php.

Referenced by parseQuery().

◆ searchInternal()

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

◆ 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 431 of file SearchMySQL.php.

References $matches.

◆ supports()

SearchMySQL::supports (   $feature)

Definition at line 212 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

Definition at line 344 of file SearchMySQL.php.

References $title, DB_MASTER, 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

Definition at line 362 of file SearchMySQL.php.

References $title, DB_MASTER, and normalizeText().

Member Data Documentation

◆ $mMinSearchLength

SearchMySQL::$mMinSearchLength
staticprivate

Definition at line 36 of file SearchMySQL.php.

◆ $strictMatching

SearchMySQL::$strictMatching = true
protected

Definition at line 34 of file SearchMySQL.php.


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