15 protected $dataTypes = [
'searchable',
'filterable',
'virtual'];
20 public function saveIndex($dimensions, \Traversable $documents)
22 foreach ($this->batch->getItems($documents, $this->batchSize) as $batchDocuments) {
35 foreach ($this->fields as $field) {
36 if (in_array($field[
'type'], $this->dataTypes)) {
37 $onDuplicate[] = $field[
'name'];
41 $this->connection->insertOnDuplicate(
54 $insertDocuments = [];
55 foreach ($documents as $entityId => $document) {
56 $documentFlat = [
'entity_id' => $entityId];
57 foreach ($this->fields as $field) {
58 if (in_array($field[
'type'], $this->dataTypes)) {
59 $documentFlat[$field[
'name']] = $document[$field[
'name']];
62 $insertDocuments[] = $documentFlat;
64 return $insertDocuments;
72 foreach ($this->batch->getItems($ids, $this->batchSize) as $batchIds) {
73 $this->connection->delete(
75 [
'entity_id IN(?)' => $batchIds]
getTableName($dataType, $dimensions)
insertDocumentsForFilterable(array $documents, array $dimensions)
saveIndex($dimensions, \Traversable $documents)
prepareFilterableFields(array $documents)
deleteIndex($dimensions, \Traversable $ids)