From f40f3ca74c919839d4777fe64d6b750a65256c37 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 5 Sep 2017 16:25:28 -0700 Subject: [PATCH] Add Ferret engine index support to Differential Summary: Ref T12819. Adds storage and indexing for the Ferret engine to Differential. Test Plan: Ran `bin/search index D123 --force`, saw indexes appear in database. No UI/user impact yet. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18540 --- .../20170905.ferret.01.diff.doc.sql | 9 +++++++ .../20170905.ferret.02.diff.field.sql | 8 ++++++ .../20170905.ferret.03.diff.ngrams.sql | 5 ++++ src/__phutil_library_map__.php | 9 +++++++ .../DifferentialRevisionFerretEngine.php | 26 +++++++++++++++++++ .../storage/DifferentialRevision.php | 9 +++++++ .../DifferentialRevisionFerretDocument.php | 14 ++++++++++ .../DifferentialRevisionFerretField.php | 14 ++++++++++ .../DifferentialRevisionFerretNgrams.php | 14 ++++++++++ 9 files changed, 108 insertions(+) create mode 100644 resources/sql/autopatches/20170905.ferret.01.diff.doc.sql create mode 100644 resources/sql/autopatches/20170905.ferret.02.diff.field.sql create mode 100644 resources/sql/autopatches/20170905.ferret.03.diff.ngrams.sql create mode 100644 src/applications/differential/search/DifferentialRevisionFerretEngine.php create mode 100644 src/applications/differential/storage/DifferentialRevisionFerretDocument.php create mode 100644 src/applications/differential/storage/DifferentialRevisionFerretField.php create mode 100644 src/applications/differential/storage/DifferentialRevisionFerretNgrams.php diff --git a/resources/sql/autopatches/20170905.ferret.01.diff.doc.sql b/resources/sql/autopatches/20170905.ferret.01.diff.doc.sql new file mode 100644 index 0000000000..9fdadbf11c --- /dev/null +++ b/resources/sql/autopatches/20170905.ferret.01.diff.doc.sql @@ -0,0 +1,9 @@ +CREATE TABLE {$NAMESPACE}_differential.differential_revision_fdocument ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + objectPHID VARBINARY(64) NOT NULL, + isClosed BOOL NOT NULL, + authorPHID VARBINARY(64), + ownerPHID VARBINARY(64), + epochCreated INT UNSIGNED NOT NULL, + epochModified INT UNSIGNED NOT NULL +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; diff --git a/resources/sql/autopatches/20170905.ferret.02.diff.field.sql b/resources/sql/autopatches/20170905.ferret.02.diff.field.sql new file mode 100644 index 0000000000..ff5f065a39 --- /dev/null +++ b/resources/sql/autopatches/20170905.ferret.02.diff.field.sql @@ -0,0 +1,8 @@ +CREATE TABLE {$NAMESPACE}_differential.differential_revision_ffield ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + documentID INT UNSIGNED NOT NULL, + fieldKey VARCHAR(4) NOT NULL COLLATE {$COLLATE_TEXT}, + rawCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT}, + termCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT}, + normalCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT} +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; diff --git a/resources/sql/autopatches/20170905.ferret.03.diff.ngrams.sql b/resources/sql/autopatches/20170905.ferret.03.diff.ngrams.sql new file mode 100644 index 0000000000..ec12354e38 --- /dev/null +++ b/resources/sql/autopatches/20170905.ferret.03.diff.ngrams.sql @@ -0,0 +1,5 @@ +CREATE TABLE {$NAMESPACE}_differential.differential_revision_fngrams ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + documentID INT UNSIGNED NOT NULL, + ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT} +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 7e30139059..6af5144d95 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -532,6 +532,10 @@ phutil_register_library_map(array( 'DifferentialRevisionEditConduitAPIMethod' => 'applications/differential/conduit/DifferentialRevisionEditConduitAPIMethod.php', 'DifferentialRevisionEditController' => 'applications/differential/controller/DifferentialRevisionEditController.php', 'DifferentialRevisionEditEngine' => 'applications/differential/editor/DifferentialRevisionEditEngine.php', + 'DifferentialRevisionFerretDocument' => 'applications/differential/storage/DifferentialRevisionFerretDocument.php', + 'DifferentialRevisionFerretEngine' => 'applications/differential/search/DifferentialRevisionFerretEngine.php', + 'DifferentialRevisionFerretField' => 'applications/differential/storage/DifferentialRevisionFerretField.php', + 'DifferentialRevisionFerretNgrams' => 'applications/differential/storage/DifferentialRevisionFerretNgrams.php', 'DifferentialRevisionFulltextEngine' => 'applications/differential/search/DifferentialRevisionFulltextEngine.php', 'DifferentialRevisionGraph' => 'infrastructure/graph/DifferentialRevisionGraph.php', 'DifferentialRevisionHasChildRelationship' => 'applications/differential/relationships/DifferentialRevisionHasChildRelationship.php', @@ -5522,6 +5526,7 @@ phutil_register_library_map(array( 'PhabricatorDestructibleInterface', 'PhabricatorProjectInterface', 'PhabricatorFulltextInterface', + 'PhabricatorFerretInterface', 'PhabricatorConduitResultInterface', 'PhabricatorDraftInterface', ), @@ -5545,6 +5550,10 @@ phutil_register_library_map(array( 'DifferentialRevisionEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod', 'DifferentialRevisionEditController' => 'DifferentialController', 'DifferentialRevisionEditEngine' => 'PhabricatorEditEngine', + 'DifferentialRevisionFerretDocument' => 'PhabricatorFerretDocument', + 'DifferentialRevisionFerretEngine' => 'PhabricatorFerretEngine', + 'DifferentialRevisionFerretField' => 'PhabricatorFerretField', + 'DifferentialRevisionFerretNgrams' => 'PhabricatorFerretNgrams', 'DifferentialRevisionFulltextEngine' => 'PhabricatorFulltextEngine', 'DifferentialRevisionGraph' => 'PhabricatorObjectGraph', 'DifferentialRevisionHasChildRelationship' => 'DifferentialRevisionRelationship', diff --git a/src/applications/differential/search/DifferentialRevisionFerretEngine.php b/src/applications/differential/search/DifferentialRevisionFerretEngine.php new file mode 100644 index 0000000000..0581cf281d --- /dev/null +++ b/src/applications/differential/search/DifferentialRevisionFerretEngine.php @@ -0,0 +1,26 @@ +