rdbms: allow callers to hint that native insertSelect() is safe
[lhc/web/wiklou.git] / includes / search / SearchEngine.php
index ac95e7c..7ac24c5 100644 (file)
@@ -60,6 +60,12 @@ abstract class SearchEngine {
        /** @const string profile type for query independent ranking features */
        const FT_QUERY_INDEP_PROFILE_TYPE = 'fulltextQueryIndepProfile';
 
+       /** @const int flag for legalSearchChars: includes all chars allowed in a search query */
+       const CHARS_ALL = 1;
+
+       /** @const int flag for legalSearchChars: includes all chars allowed in a search term */
+       const CHARS_NO_SYNTAX = 2;
+
        /**
         * Perform a full text search query and return a result set.
         * If full text searches are not supported or disabled, return null.
@@ -106,11 +112,11 @@ abstract class SearchEngine {
         */
        public function supports( $feature ) {
                switch ( $feature ) {
-               case 'search-update':
-                       return true;
-               case 'title-suffix-filter':
-               default:
-                       return false;
+                       case 'search-update':
+                               return true;
+                       case 'title-suffix-filter':
+                       default:
+                               return false;
                }
        }
 
@@ -132,7 +138,7 @@ abstract class SearchEngine {
         * @return mixed the feature value or null if unset
         */
        public function getFeatureData( $feature ) {
-               if ( isset ( $this->features[$feature] ) ) {
+               if ( isset( $this->features[$feature] ) ) {
                        return $this->features[$feature];
                }
                return null;
@@ -206,11 +212,13 @@ abstract class SearchEngine {
        }
 
        /**
-        * Get chars legal for search.
+        * Get chars legal for search
         * NOTE: usage as static is deprecated and preserved only as BC measure
+        * @param int $type type of search chars (see self::CHARS_ALL
+        * and self::CHARS_NO_SYNTAX). Defaults to CHARS_ALL
         * @return string
         */
-       public static function legalSearchChars() {
+       public static function legalSearchChars( $type = self::CHARS_ALL ) {
                return "A-Za-z_'.0-9\\x80-\\xFF\\-";
        }
 
@@ -261,7 +269,7 @@ abstract class SearchEngine {
         * might support more. The default in all implementations should be 'relevance.'
         *
         * @since 1.25
-        * @return array(string) the valid sort directions for setSort
+        * @return string[] the valid sort directions for setSort
         */
        public function getValidSorts() {
                return [ 'relevance' ];
@@ -535,7 +543,7 @@ abstract class SearchEngine {
                                $this->setLimitOffset( $fallbackLimit );
                                $fallbackSearchResult = $this->completionSearch( $fbs );
                                $results->appendAll( $fallbackSearchResult );
-                               $fallbackLimit -= count( $fallbackSearchResult );
+                               $fallbackLimit -= $fallbackSearchResult->getSize();
                                if ( $fallbackLimit <= 0 ) {
                                        break;
                                }
@@ -558,6 +566,7 @@ abstract class SearchEngine {
        /**
         * Process completion search results.
         * Resolves the titles and rescores.
+        * @param string $search
         * @param SearchSuggestionSet $suggestions
         * @return SearchSuggestionSet
         */
@@ -719,7 +728,7 @@ abstract class SearchEngine {
         * Create a search field definition.
         * Specific search engines should override this method to create search fields.
         * @param string $name
-        * @param int    $type One of the types in SearchIndexField::INDEX_TYPE_*
+        * @param int $type One of the types in SearchIndexField::INDEX_TYPE_*
         * @return SearchIndexField
         * @since 1.28
         */