protected function Stemmer::process in Search API 8
Processes a single string value.
This method is ultimately called for all text by the standard implementation, and does nothing by default.
Parameters
mixed $value: The value to preprocess, as a reference. Can be manipulated directly, nothing has to be returned. Since this can be called for all value types, $value has to remain the same type. The possible types for $value depend on shouldProcess().
Overrides FieldsProcessorPluginBase::process
See also
\Drupal\search_api\Processor\FieldsProcessorPluginBase::shouldProcess()
File
- src/
Plugin/ search_api/ processor/ Stemmer.php, line 140
Class
- Stemmer
- Stems search terms.
Namespace
Drupal\search_api\Plugin\search_api\processorCode
protected function process(&$value) {
// In the absence of the tokenizer processor, this ensures split words.
$words = preg_split('/[^\\p{L}\\p{N}]+/u', strip_tags($value), -1, PREG_SPLIT_NO_EMPTY);
$stemmed = [];
foreach ($words as $i => $word) {
// To optimize processing, store processed stems in a static array.
if (!isset($this->stems[$word])) {
$stem = new Porter2($word, $this->configuration['exceptions']);
$this->stems[$word] = $stem
->stem();
}
$stemmed[] = $this->stems[$word];
}
$value = implode(' ', $stemmed);
}