public function getSolrId(Index $index) { if (!isset($this->map[$index->getIdentifier()])) { $suffix = $index->isFuzzyMatching() ? '_t' : '_s'; if ($index->isDefaultSearchable()) { $suffix .= '_d'; } $this->map[$index->getIdentifier()] = $index->getIdentifier() . $suffix; } return $this->map[$index->getIdentifier()]; }
protected function indexProperty(Document $document, \core_kernel_classes_Property $property) { $indexes = $property->getPropertyValues(new \core_kernel_classes_Property('http://www.tao.lu/Ontologies/TAO.rdf#PropertyIndex')); foreach ($indexes as $indexUri) { $index = new Index($indexUri); $id = $index->getIdentifier(); $strings = $index->tokenize($this->resource->getPropertyValues($property)); if (!empty($strings)) { if ($index->isFuzzyMatching()) { // cannot store multiple fuzzy strings $string = implode(' ', $strings); $field = Document\Field::Text($index->getIdentifier(), $string); $field->isStored = $index->isStored(); $document->addField($field); } else { $value = count($strings) > 1 ? $strings : reset($strings); $field = Document\Field::Keyword($index->getIdentifier(), $value); $field->isStored = $index->isStored() && !is_array($value); // storage of arrays not supported $document->addField($field); } } } }