summaryrefslogtreecommitdiff
path: root/www/wiki/includes/search/SearchIndexField.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/includes/search/SearchIndexField.php')
-rw-r--r--www/wiki/includes/search/SearchIndexField.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/www/wiki/includes/search/SearchIndexField.php b/www/wiki/includes/search/SearchIndexField.php
new file mode 100644
index 00000000..6f3b2078
--- /dev/null
+++ b/www/wiki/includes/search/SearchIndexField.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Definition of a mapping for the search index field.
+ * @since 1.28
+ */
+interface SearchIndexField {
+ /**
+ * Field types
+ */
+ const INDEX_TYPE_TEXT = 0;
+ const INDEX_TYPE_KEYWORD = 1;
+ const INDEX_TYPE_INTEGER = 2;
+ const INDEX_TYPE_NUMBER = 3;
+ const INDEX_TYPE_DATETIME = 4;
+ const INDEX_TYPE_NESTED = 5;
+ const INDEX_TYPE_BOOL = 6;
+
+ /**
+ * 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
+ */
+ const INDEX_TYPE_SHORT_TEXT = 7;
+
+ /**
+ * Generic field flags.
+ */
+ /**
+ * This field is case-insensitive.
+ */
+ const FLAG_CASEFOLD = 1;
+
+ /**
+ * This field contains secondary information, which is
+ * already present in other fields, but can be used for
+ * scoring.
+ */
+ const FLAG_SCORING = 2;
+
+ /**
+ * This field does not need highlight handling.
+ */
+ const FLAG_NO_HIGHLIGHT = 4;
+
+ /**
+ * Do not index this field, just store it.
+ */
+ 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 );
+}