wiki.techinc.nl/includes/search/SearchIndexField.php
Timo Tijhof ee5ad165e6 pager: Clean up file headers and @ingroup
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
2022-09-29 21:05:08 +01:00

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 );
}