Differential D18487 Diff 44410 src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php
| Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | foreach ($document->getFieldData() as $field) { | ||||
| $ngrams_source[] = $raw_corpus; | $ngrams_source[] = $raw_corpus; | ||||
| } | } | ||||
| $ngrams_source = implode(' ', $ngrams_source); | $ngrams_source = implode(' ', $ngrams_source); | ||||
| $ngrams = id(new PhabricatorNgramEngine()) | $ngrams = id(new PhabricatorNgramEngine()) | ||||
| ->getNgramsFromString($ngrams_source, 'index'); | ->getNgramsFromString($ngrams_source, 'index'); | ||||
| $ferret_document->openTransaction(); | $ferret_document->openTransaction(); | ||||
| try { | |||||
| $this->deleteOldDocument($engine, $object, $document); | $this->deleteOldDocument($engine, $object, $document); | ||||
| $ferret_document->save(); | $ferret_document->save(); | ||||
| $document_id = $ferret_document->getID(); | $document_id = $ferret_document->getID(); | ||||
| foreach ($ferret_fields as $ferret_field) { | foreach ($ferret_fields as $ferret_field) { | ||||
| $ferret_field | $ferret_field | ||||
| ->setDocumentID($document_id) | ->setDocumentID($document_id) | ||||
| Show All 14 Lines | try { | ||||
| foreach (PhabricatorLiskDAO::chunkSQL($sql) as $chunk) { | foreach (PhabricatorLiskDAO::chunkSQL($sql) as $chunk) { | ||||
| queryfx( | queryfx( | ||||
| $conn, | $conn, | ||||
| 'INSERT INTO %T (documentID, ngram) VALUES %Q', | 'INSERT INTO %T (documentID, ngram) VALUES %Q', | ||||
| $ferret_ngrams->getTableName(), | $ferret_ngrams->getTableName(), | ||||
| $chunk); | $chunk); | ||||
| } | } | ||||
| } catch (Exception $ex) { | |||||
| $ferret_document->killTransaction(); | |||||
| throw $ex; | |||||
| } | |||||
| $ferret_document->saveTransaction(); | $ferret_document->saveTransaction(); | ||||
| } | } | ||||
| private function deleteOldDocument( | private function deleteOldDocument( | ||||
| PhabricatorFerretEngine $engine, | PhabricatorFerretEngine $engine, | ||||
| $object, | $object, | ||||
| PhabricatorSearchAbstractDocument $document) { | PhabricatorSearchAbstractDocument $document) { | ||||
| Show All 31 Lines | |||||