Follows similar commits to the objectcache, rdbms, filerepo, jobqueue components and other areas [1]. * Remove duplicate descriptions from file blocks in favour of class doc blocks. This reduces needless duplication and was often incorrect or outdated, and helps (ironically) to make the file header more consistently visually ignorable. * Remove `ingroup` from file blocks in class files as otherwise the file is indexed twice (e.g. in Doxygen) which makes navigation more messy. * Fix non-standard `@unstable for implementation` annotations in favour of `@stable to type` as per T257789 and <https://www.mediawiki.org/wiki/Stable_interface_policy>. While at it, fix the only other outstanding uses of `@stable for` in core as well in a handful of context/, logging/ and search/ files. [1] https://gerrit.wikimedia.org/r/q/message:ingroup+owner:Krinkle Bug: T257789 Change-Id: Ided3c5ab69e1b587b1b76a3c97a7cdb88f21e130
114 lines
3.1 KiB
PHP
114 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Definition of a mapping for the search index field.
|
|
*
|
|
* Must not be implemented directly by extensions, extend SearchIndexFieldDefinition instead.
|
|
*
|
|
* @stable to type
|
|
* @since 1.28
|
|
*/
|
|
interface SearchIndexField {
|
|
/*
|
|
* Field types
|
|
*/
|
|
/**
|
|
* TEXT fields are suitable for natural language and may be subject to
|
|
* analysis such as stemming.
|
|
*
|
|
* Read more:
|
|
* https://wikimediafoundation.org/2018/08/07/anatomy-search-token-affection/
|
|
* https://wikimediafoundation.org/2018/09/13/anatomy-search-variation-under-nature/
|
|
*/
|
|
public const INDEX_TYPE_TEXT = 'text';
|
|
/**
|
|
* KEYWORD fields are indexed without any processing, so are appropriate
|
|
* for e.g. URLs. The content will often consist of a single token.
|
|
*/
|
|
public const INDEX_TYPE_KEYWORD = 'keyword';
|
|
public const INDEX_TYPE_INTEGER = 'integer';
|
|
public const INDEX_TYPE_NUMBER = 'number';
|
|
public const INDEX_TYPE_DATETIME = 'datetime';
|
|
public const INDEX_TYPE_NESTED = 'nested';
|
|
public const INDEX_TYPE_BOOL = 'bool';
|
|
|
|
/**
|
|
* SHORT_TEXT is meant to be used with short text made of mostly ascii
|
|
* technical information. Generally a language agnostic analysis chain
|
|
* is used and aggressive splitting to increase recall.
|
|
* E.g suited for mime/type
|
|
*/
|
|
public const INDEX_TYPE_SHORT_TEXT = 'short_text';
|
|
|
|
/**
|
|
* Generic field flags.
|
|
*/
|
|
/**
|
|
* This field is case-insensitive.
|
|
*/
|
|
public const FLAG_CASEFOLD = 1;
|
|
|
|
/**
|
|
* This field contains secondary information, which is
|
|
* already present in other fields, but can be used for
|
|
* scoring.
|
|
*/
|
|
public const FLAG_SCORING = 2;
|
|
|
|
/**
|
|
* This field does not need highlight handling.
|
|
*/
|
|
public const FLAG_NO_HIGHLIGHT = 4;
|
|
|
|
/**
|
|
* Do not index this field, just store it.
|
|
*/
|
|
public const FLAG_NO_INDEX = 8;
|
|
|
|
/**
|
|
* Get mapping for specific search engine
|
|
* @param SearchEngine $engine
|
|
* @return array|null Null means this field does not map to anything
|
|
*/
|
|
public function getMapping( SearchEngine $engine );
|
|
|
|
/**
|
|
* Set global flag for this field.
|
|
*
|
|
* @param int $flag Bit flag to set/unset
|
|
* @param bool $unset True if flag should be unset, false by default
|
|
* @return $this
|
|
*/
|
|
public function setFlag( $flag, $unset = false );
|
|
|
|
/**
|
|
* Check if flag is set.
|
|
* @param int $flag
|
|
* @return int 0 if unset, !=0 if set
|
|
*/
|
|
public function checkFlag( $flag );
|
|
|
|
/**
|
|
* Merge two field definitions if possible.
|
|
*
|
|
* @param SearchIndexField $that
|
|
* @return SearchIndexField|false New definition or false if not mergeable.
|
|
*/
|
|
public function merge( SearchIndexField $that );
|
|
|
|
/**
|
|
* A list of search engine hints for this field.
|
|
* Hints are usually specific to a search engine implementation
|
|
* and allow to fine control how the search engine will handle this
|
|
* particular field.
|
|
*
|
|
* For example some search engine permits some optimizations
|
|
* at index time by ignoring an update if the updated value
|
|
* does not change by more than X% on a numeric value.
|
|
*
|
|
* @param SearchEngine $engine
|
|
* @return array an array of hints generally indexed by hint name. The type of
|
|
* values is search engine specific
|
|
* @since 1.30
|
|
*/
|
|
public function getEngineHints( SearchEngine $engine );
|
|
}
|