--- /dev/null
+<?php
+
+/**
+ * @file
+ * Hooks provided by the Search module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Preprocess text for search.
+ *
+ * This hook is called to preprocess both the text added to the search index
+ * and the keywords users have submitted for searching. The same processing
+ * needs to be applied to both so that searches will find matches.
+ *
+ * Possible uses:
+ * - Adding spaces between words of Chinese or Japanese text.
+ * - Stemming words down to their root words to allow matches between, for
+ * instance, walk, walked, walking, and walks in searching.
+ * - Expanding abbreviations and acronyms that occur in text.
+ *
+ * @param string $text
+ * The text to preprocess. This is a single piece of plain text extracted
+ * from between two HTML tags or from the search query. It will not contain
+ * any HTML entities or HTML tags.
+ * @param string|null $langcode
+ * The language code for the language the text is in, if known. When this hook
+ * is invoked during search indexing, the language will most likely be known
+ * and passed in. This is left up to the search plugin;
+ * \Drupal\node\Plugin\Search\NodeSearch does pass in the node
+ * language. However, when this hook is invoked during searching, in order to
+ * let a module apply the same preprocessing to the search keywords and
+ * indexed text so they will match, $langcode will be NULL. A hook
+ * implementation can call the getCurrentLanguage() method on the
+ * 'language_manager' service to determine the current language and act
+ * accordingly.
+ *
+ * @return string
+ * The text after preprocessing. Note that if your module decides not to
+ * alter the text, it should return the original text. Also, after
+ * preprocessing, words in the text should be separated by a space.
+ *
+ * @ingroup search
+ */
+function hook_search_preprocess($text, $langcode = NULL) {
+ // If the language is not set, get it from the language manager.
+ if (!isset($langcode)) {
+ $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+ }
+
+ // If the langcode is set to 'en' then add variations of the word "testing"
+ // which can also be found during English language searches.
+ if ($langcode == 'en') {
+ // Add the alternate verb forms for the word "testing".
+ if ($text == 'we are testing') {
+ $text .= ' test tested';
+ }
+ }
+
+ return $text;
+}
+
+/**
+ * Alter search plugin definitions.
+ *
+ * @param array $definitions
+ * The array of search plugin definitions, keyed by plugin ID.
+ *
+ * @see \Drupal\search\Annotation\SearchPlugin
+ * @see \Drupal\search\SearchPluginManager
+ */
+function hook_search_plugin_alter(array &$definitions) {
+ if (isset($definitions['node_search'])) {
+ $definitions['node_search']['title'] = t('Nodes');
+ }
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */