diff --git a/resources/sql/autopatches/20160722.pack.01.pubngrams.sql b/resources/sql/autopatches/20160722.pack.01.pubngrams.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160722.pack.01.pubngrams.sql
@@ -0,0 +1,7 @@
+CREATE TABLE {$NAMESPACE}_packages.packages_publishername_ngrams (
+  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  objectID INT UNSIGNED NOT NULL,
+  ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
+  KEY `key_object` (objectID),
+  KEY `key_ngram` (ngram, objectID)
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20160722.pack.02.pkgngrams.sql b/resources/sql/autopatches/20160722.pack.02.pkgngrams.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160722.pack.02.pkgngrams.sql
@@ -0,0 +1,7 @@
+CREATE TABLE {$NAMESPACE}_packages.packages_packagename_ngrams (
+  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  objectID INT UNSIGNED NOT NULL,
+  ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
+  KEY `key_object` (objectID),
+  KEY `key_ngram` (ngram, objectID)
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20160722.pack.03.versionngrams.sql b/resources/sql/autopatches/20160722.pack.03.versionngrams.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160722.pack.03.versionngrams.sql
@@ -0,0 +1,7 @@
+CREATE TABLE {$NAMESPACE}_packages.packages_versionname_ngrams (
+  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  objectID INT UNSIGNED NOT NULL,
+  ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
+  KEY `key_object` (objectID),
+  KEY `key_ngram` (ngram, objectID)
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2978,6 +2978,7 @@
     'PhabricatorPackagesDAO' => 'applications/packages/storage/PhabricatorPackagesDAO.php',
     'PhabricatorPackagesEditEngine' => 'applications/packages/editor/PhabricatorPackagesEditEngine.php',
     'PhabricatorPackagesEditor' => 'applications/packages/editor/PhabricatorPackagesEditor.php',
+    'PhabricatorPackagesNgrams' => 'applications/packages/storage/PhabricatorPackagesNgrams.php',
     'PhabricatorPackagesPackage' => 'applications/packages/storage/PhabricatorPackagesPackage.php',
     'PhabricatorPackagesPackageController' => 'applications/packages/controller/PhabricatorPackagesPackageController.php',
     'PhabricatorPackagesPackageDatasource' => 'applications/packages/typeahead/PhabricatorPackagesPackageDatasource.php',
@@ -2989,6 +2990,7 @@
     'PhabricatorPackagesPackageEditor' => 'applications/packages/editor/PhabricatorPackagesPackageEditor.php',
     'PhabricatorPackagesPackageKeyTransaction' => 'applications/packages/xaction/package/PhabricatorPackagesPackageKeyTransaction.php',
     'PhabricatorPackagesPackageListController' => 'applications/packages/controller/PhabricatorPackagesPackageListController.php',
+    'PhabricatorPackagesPackageNameNgrams' => 'applications/packages/storage/PhabricatorPackagesPackageNameNgrams.php',
     'PhabricatorPackagesPackageNameTransaction' => 'applications/packages/xaction/package/PhabricatorPackagesPackageNameTransaction.php',
     'PhabricatorPackagesPackagePHIDType' => 'applications/packages/phid/PhabricatorPackagesPackagePHIDType.php',
     'PhabricatorPackagesPackagePublisherTransaction' => 'applications/packages/xaction/package/PhabricatorPackagesPackagePublisherTransaction.php',
@@ -3009,6 +3011,7 @@
     'PhabricatorPackagesPublisherEditor' => 'applications/packages/editor/PhabricatorPackagesPublisherEditor.php',
     'PhabricatorPackagesPublisherKeyTransaction' => 'applications/packages/xaction/publisher/PhabricatorPackagesPublisherKeyTransaction.php',
     'PhabricatorPackagesPublisherListController' => 'applications/packages/controller/PhabricatorPackagesPublisherListController.php',
+    'PhabricatorPackagesPublisherNameNgrams' => 'applications/packages/storage/PhabricatorPackagesPublisherNameNgrams.php',
     'PhabricatorPackagesPublisherNameTransaction' => 'applications/packages/xaction/publisher/PhabricatorPackagesPublisherNameTransaction.php',
     'PhabricatorPackagesPublisherPHIDType' => 'applications/packages/phid/PhabricatorPackagesPublisherPHIDType.php',
     'PhabricatorPackagesPublisherQuery' => 'applications/packages/query/PhabricatorPackagesPublisherQuery.php',
@@ -3028,6 +3031,7 @@
     'PhabricatorPackagesVersionEditEngine' => 'applications/packages/editor/PhabricatorPackagesVersionEditEngine.php',
     'PhabricatorPackagesVersionEditor' => 'applications/packages/editor/PhabricatorPackagesVersionEditor.php',
     'PhabricatorPackagesVersionListController' => 'applications/packages/controller/PhabricatorPackagesVersionListController.php',
+    'PhabricatorPackagesVersionNameNgrams' => 'applications/packages/storage/PhabricatorPackagesVersionNameNgrams.php',
     'PhabricatorPackagesVersionNameTransaction' => 'applications/packages/xaction/version/PhabricatorPackagesVersionNameTransaction.php',
     'PhabricatorPackagesVersionPHIDType' => 'applications/packages/phid/PhabricatorPackagesVersionPHIDType.php',
     'PhabricatorPackagesVersionPackageTransaction' => 'applications/packages/xaction/version/PhabricatorPackagesVersionPackageTransaction.php',
@@ -7797,6 +7801,7 @@
     'PhabricatorPackagesDAO' => 'PhabricatorLiskDAO',
     'PhabricatorPackagesEditEngine' => 'PhabricatorEditEngine',
     'PhabricatorPackagesEditor' => 'PhabricatorApplicationTransactionEditor',
+    'PhabricatorPackagesNgrams' => 'PhabricatorSearchNgrams',
     'PhabricatorPackagesPackage' => array(
       'PhabricatorPackagesDAO',
       'PhabricatorPolicyInterface',
@@ -7805,6 +7810,7 @@
       'PhabricatorSubscribableInterface',
       'PhabricatorProjectInterface',
       'PhabricatorConduitResultInterface',
+      'PhabricatorNgramsInterface',
     ),
     'PhabricatorPackagesPackageController' => 'PhabricatorPackagesController',
     'PhabricatorPackagesPackageDatasource' => 'PhabricatorTypeaheadDatasource',
@@ -7816,6 +7822,7 @@
     'PhabricatorPackagesPackageEditor' => 'PhabricatorPackagesEditor',
     'PhabricatorPackagesPackageKeyTransaction' => 'PhabricatorPackagesPackageTransactionType',
     'PhabricatorPackagesPackageListController' => 'PhabricatorPackagesPackageController',
+    'PhabricatorPackagesPackageNameNgrams' => 'PhabricatorPackagesNgrams',
     'PhabricatorPackagesPackageNameTransaction' => 'PhabricatorPackagesPackageTransactionType',
     'PhabricatorPackagesPackagePHIDType' => 'PhabricatorPHIDType',
     'PhabricatorPackagesPackagePublisherTransaction' => 'PhabricatorPackagesPackageTransactionType',
@@ -7834,6 +7841,7 @@
       'PhabricatorSubscribableInterface',
       'PhabricatorProjectInterface',
       'PhabricatorConduitResultInterface',
+      'PhabricatorNgramsInterface',
     ),
     'PhabricatorPackagesPublisherController' => 'PhabricatorPackagesController',
     'PhabricatorPackagesPublisherDatasource' => 'PhabricatorTypeaheadDatasource',
@@ -7844,6 +7852,7 @@
     'PhabricatorPackagesPublisherEditor' => 'PhabricatorPackagesEditor',
     'PhabricatorPackagesPublisherKeyTransaction' => 'PhabricatorPackagesPublisherTransactionType',
     'PhabricatorPackagesPublisherListController' => 'PhabricatorPackagesPublisherController',
+    'PhabricatorPackagesPublisherNameNgrams' => 'PhabricatorPackagesNgrams',
     'PhabricatorPackagesPublisherNameTransaction' => 'PhabricatorPackagesPublisherTransactionType',
     'PhabricatorPackagesPublisherPHIDType' => 'PhabricatorPHIDType',
     'PhabricatorPackagesPublisherQuery' => 'PhabricatorPackagesQuery',
@@ -7865,6 +7874,7 @@
       'PhabricatorSubscribableInterface',
       'PhabricatorProjectInterface',
       'PhabricatorConduitResultInterface',
+      'PhabricatorNgramsInterface',
     ),
     'PhabricatorPackagesVersionController' => 'PhabricatorPackagesController',
     'PhabricatorPackagesVersionEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod',
@@ -7872,6 +7882,7 @@
     'PhabricatorPackagesVersionEditEngine' => 'PhabricatorPackagesEditEngine',
     'PhabricatorPackagesVersionEditor' => 'PhabricatorPackagesEditor',
     'PhabricatorPackagesVersionListController' => 'PhabricatorPackagesVersionController',
+    'PhabricatorPackagesVersionNameNgrams' => 'PhabricatorPackagesNgrams',
     'PhabricatorPackagesVersionNameTransaction' => 'PhabricatorPackagesVersionTransactionType',
     'PhabricatorPackagesVersionPHIDType' => 'PhabricatorPHIDType',
     'PhabricatorPackagesVersionPackageTransaction' => 'PhabricatorPackagesVersionTransactionType',
diff --git a/src/applications/packages/editor/PhabricatorPackagesEditor.php b/src/applications/packages/editor/PhabricatorPackagesEditor.php
--- a/src/applications/packages/editor/PhabricatorPackagesEditor.php
+++ b/src/applications/packages/editor/PhabricatorPackagesEditor.php
@@ -7,4 +7,14 @@
     return 'PhabricatorPasteApplication';
   }
 
+  protected function supportsSearch() {
+    return true;
+  }
+
+  protected function shouldPublishFeedStory(
+    PhabricatorLiskDAO $object,
+    array $xactions) {
+    return true;
+  }
+
 }
diff --git a/src/applications/packages/editor/PhabricatorPackagesPackageEditor.php b/src/applications/packages/editor/PhabricatorPackagesPackageEditor.php
--- a/src/applications/packages/editor/PhabricatorPackagesPackageEditor.php
+++ b/src/applications/packages/editor/PhabricatorPackagesPackageEditor.php
@@ -24,12 +24,6 @@
     return $types;
   }
 
-  protected function shouldPublishFeedStory(
-    PhabricatorLiskDAO $object,
-    array $xactions) {
-    return true;
-  }
-
   protected function getMailTo(PhabricatorLiskDAO $object) {
     return array();
   }
diff --git a/src/applications/packages/editor/PhabricatorPackagesPublisherEditor.php b/src/applications/packages/editor/PhabricatorPackagesPublisherEditor.php
--- a/src/applications/packages/editor/PhabricatorPackagesPublisherEditor.php
+++ b/src/applications/packages/editor/PhabricatorPackagesPublisherEditor.php
@@ -21,12 +21,6 @@
     return $types;
   }
 
-  protected function shouldPublishFeedStory(
-    PhabricatorLiskDAO $object,
-    array $xactions) {
-    return true;
-  }
-
   protected function getMailTo(PhabricatorLiskDAO $object) {
     return array();
   }
diff --git a/src/applications/packages/editor/PhabricatorPackagesVersionEditor.php b/src/applications/packages/editor/PhabricatorPackagesVersionEditor.php
--- a/src/applications/packages/editor/PhabricatorPackagesVersionEditor.php
+++ b/src/applications/packages/editor/PhabricatorPackagesVersionEditor.php
@@ -15,12 +15,6 @@
     return pht('%s created %s.', $author, $object);
   }
 
-  protected function shouldPublishFeedStory(
-    PhabricatorLiskDAO $object,
-    array $xactions) {
-    return true;
-  }
-
   protected function getMailTo(PhabricatorLiskDAO $object) {
     return array();
   }
diff --git a/src/applications/packages/query/PhabricatorPackagesPackageQuery.php b/src/applications/packages/query/PhabricatorPackagesPackageQuery.php
--- a/src/applications/packages/query/PhabricatorPackagesPackageQuery.php
+++ b/src/applications/packages/query/PhabricatorPackagesPackageQuery.php
@@ -34,6 +34,12 @@
     return $this;
   }
 
+  public function withNameNgrams($ngrams) {
+    return $this->withNgramsConstraint(
+      new PhabricatorPackagesPackageNameNgrams(),
+      $ngrams);
+  }
+
   public function newResultObject() {
     return new PhabricatorPackagesPackage();
   }
@@ -62,7 +68,7 @@
     if ($this->publisherPHIDs !== null) {
       $where[] = qsprintf(
         $conn,
-        'p.phid IN (%Ls)',
+        'p.publisherPHID IN (%Ls)',
         $this->publisherPHIDs);
     }
 
diff --git a/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php b/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
--- a/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
+++ b/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
@@ -18,11 +18,30 @@
   protected function buildQueryFromParameters(array $map) {
     $query = $this->newQuery();
 
+    if ($map['match'] !== null) {
+      $query->withNameNgrams($map['match']);
+    }
+
+    if ($map['publisherPHIDs']) {
+      $query->withPublisherPHIDs($map['publisherPHIDs']);
+    }
+
     return $query;
   }
 
   protected function buildCustomSearchFields() {
-    return array();
+    return array(
+      id(new PhabricatorSearchTextField())
+        ->setLabel(pht('Name Contains'))
+        ->setKey('match')
+        ->setDescription(pht('Search for packages by name substring.')),
+      id(new PhabricatorSearchDatasourceField())
+        ->setLabel(pht('Publishers'))
+        ->setKey('publisherPHIDs')
+        ->setAliases(array('publisherPHID', 'publisher', 'publishers'))
+        ->setDatasource(new PhabricatorPackagesPublisherDatasource())
+        ->setDescription(pht('Search for packages by publisher.')),
+    );
   }
 
   protected function getURI($path) {
diff --git a/src/applications/packages/query/PhabricatorPackagesPublisherQuery.php b/src/applications/packages/query/PhabricatorPackagesPublisherQuery.php
--- a/src/applications/packages/query/PhabricatorPackagesPublisherQuery.php
+++ b/src/applications/packages/query/PhabricatorPackagesPublisherQuery.php
@@ -22,6 +22,12 @@
     return $this;
   }
 
+  public function withNameNgrams($ngrams) {
+    return $this->withNgramsConstraint(
+      new PhabricatorPackagesPublisherNameNgrams(),
+      $ngrams);
+  }
+
   public function newResultObject() {
     return new PhabricatorPackagesPublisher();
   }
@@ -36,25 +42,29 @@
     if ($this->ids !== null) {
       $where[] = qsprintf(
         $conn,
-        'id IN (%Ld)',
+        'u.id IN (%Ld)',
         $this->ids);
     }
 
     if ($this->phids !== null) {
       $where[] = qsprintf(
         $conn,
-        'phid IN (%Ls)',
+        'u.phid IN (%Ls)',
         $this->phids);
     }
 
     if ($this->publisherKeys !== null) {
       $where[] = qsprintf(
         $conn,
-        'publisherKey IN (%Ls)',
+        'u.publisherKey IN (%Ls)',
         $this->publisherKeys);
     }
 
     return $where;
   }
 
+  protected function getPrimaryTableAlias() {
+    return 'u';
+  }
+
 }
diff --git a/src/applications/packages/query/PhabricatorPackagesPublisherSearchEngine.php b/src/applications/packages/query/PhabricatorPackagesPublisherSearchEngine.php
--- a/src/applications/packages/query/PhabricatorPackagesPublisherSearchEngine.php
+++ b/src/applications/packages/query/PhabricatorPackagesPublisherSearchEngine.php
@@ -18,11 +18,20 @@
   protected function buildQueryFromParameters(array $map) {
     $query = $this->newQuery();
 
+    if ($map['match'] !== null) {
+      $query->withNameNgrams($map['match']);
+    }
+
     return $query;
   }
 
   protected function buildCustomSearchFields() {
-    return array();
+    return array(
+      id(new PhabricatorSearchTextField())
+        ->setLabel(pht('Name Contains'))
+        ->setKey('match')
+        ->setDescription(pht('Search for publishers by name substring.')),
+    );
   }
 
   protected function getURI($path) {
diff --git a/src/applications/packages/query/PhabricatorPackagesVersionQuery.php b/src/applications/packages/query/PhabricatorPackagesVersionQuery.php
--- a/src/applications/packages/query/PhabricatorPackagesVersionQuery.php
+++ b/src/applications/packages/query/PhabricatorPackagesVersionQuery.php
@@ -34,6 +34,12 @@
     return $this;
   }
 
+  public function withNameNgrams($ngrams) {
+    return $this->withNgramsConstraint(
+      new PhabricatorPackagesVersionNameNgrams(),
+      $ngrams);
+  }
+
   public function newResultObject() {
     return new PhabricatorPackagesVersion();
   }
diff --git a/src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php b/src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php
--- a/src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php
+++ b/src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php
@@ -18,13 +18,31 @@
   protected function buildQueryFromParameters(array $map) {
     $query = $this->newQuery();
 
+    if ($map['match'] !== null) {
+      $query->withNameNgrams($map['match']);
+    }
+
+    if ($map['packagePHIDs']) {
+      $query->withPackagePHIDs($map['packagePHIDs']);
+    }
+
     return $query;
   }
 
   protected function buildCustomSearchFields() {
-    return array();
+    return array(
+      id(new PhabricatorSearchTextField())
+        ->setLabel(pht('Name Contains'))
+        ->setKey('match')
+        ->setDescription(pht('Search for versions by name substring.')),
+      id(new PhabricatorSearchDatasourceField())
+        ->setLabel(pht('Packages'))
+        ->setKey('packagePHIDs')
+        ->setAliases(array('packagePHID', 'package', 'packages'))
+        ->setDatasource(new PhabricatorPackagesPackageDatasource())
+        ->setDescription(pht('Search for versions by package.')),
+    );
   }
-
   protected function getURI($path) {
     return '/packages/version/'.$path;
   }
diff --git a/src/applications/packages/storage/PhabricatorPackagesNgrams.php b/src/applications/packages/storage/PhabricatorPackagesNgrams.php
new file mode 100644
--- /dev/null
+++ b/src/applications/packages/storage/PhabricatorPackagesNgrams.php
@@ -0,0 +1,10 @@
+<?php
+
+abstract class PhabricatorPackagesNgrams
+  extends PhabricatorSearchNgrams {
+
+  public function getApplicationName() {
+    return 'packages';
+  }
+
+}
diff --git a/src/applications/packages/storage/PhabricatorPackagesPackage.php b/src/applications/packages/storage/PhabricatorPackagesPackage.php
--- a/src/applications/packages/storage/PhabricatorPackagesPackage.php
+++ b/src/applications/packages/storage/PhabricatorPackagesPackage.php
@@ -8,7 +8,8 @@
     PhabricatorDestructibleInterface,
     PhabricatorSubscribableInterface,
     PhabricatorProjectInterface,
-    PhabricatorConduitResultInterface {
+    PhabricatorConduitResultInterface,
+    PhabricatorNgramsInterface {
 
   protected $name;
   protected $publisherPHID;
@@ -39,7 +40,7 @@
     return array(
       self::CONFIG_AUX_PHID => true,
       self::CONFIG_COLUMN_SCHEMA => array(
-        'name' => 'text64',
+        'name' => 'sort64',
         'packageKey' => 'sort64',
       ),
       self::CONFIG_KEY_SCHEMA => array(
@@ -207,6 +208,17 @@
   }
 
 
+/* -(  PhabricatorNgramsInterface  )----------------------------------------- */
+
+
+  public function newNgrams() {
+    return array(
+      id(new PhabricatorPackagesPackageNameNgrams())
+        ->setValue($this->getName()),
+    );
+  }
+
+
 /* -(  PhabricatorConduitResultInterface  )---------------------------------- */
 
 
diff --git a/src/applications/packages/storage/PhabricatorPackagesPackageNameNgrams.php b/src/applications/packages/storage/PhabricatorPackagesPackageNameNgrams.php
new file mode 100644
--- /dev/null
+++ b/src/applications/packages/storage/PhabricatorPackagesPackageNameNgrams.php
@@ -0,0 +1,14 @@
+<?php
+
+final class PhabricatorPackagesPackageNameNgrams
+  extends PhabricatorPackagesNgrams {
+
+  public function getNgramKey() {
+    return 'packagename';
+  }
+
+  public function getColumnName() {
+    return 'name';
+  }
+
+}
diff --git a/src/applications/packages/storage/PhabricatorPackagesPublisher.php b/src/applications/packages/storage/PhabricatorPackagesPublisher.php
--- a/src/applications/packages/storage/PhabricatorPackagesPublisher.php
+++ b/src/applications/packages/storage/PhabricatorPackagesPublisher.php
@@ -8,7 +8,8 @@
     PhabricatorDestructibleInterface,
     PhabricatorSubscribableInterface,
     PhabricatorProjectInterface,
-    PhabricatorConduitResultInterface {
+    PhabricatorConduitResultInterface,
+    PhabricatorNgramsInterface {
 
   protected $name;
   protected $publisherKey;
@@ -31,7 +32,7 @@
     return array(
       self::CONFIG_AUX_PHID => true,
       self::CONFIG_COLUMN_SCHEMA => array(
-        'name' => 'text64',
+        'name' => 'sort64',
         'publisherKey' => 'sort64',
       ),
       self::CONFIG_KEY_SCHEMA => array(
@@ -183,6 +184,17 @@
   }
 
 
+/* -(  PhabricatorNgramsInterface  )----------------------------------------- */
+
+
+  public function newNgrams() {
+    return array(
+      id(new PhabricatorPackagesPublisherNameNgrams())
+        ->setValue($this->getName()),
+    );
+  }
+
+
 /* -(  PhabricatorConduitResultInterface  )---------------------------------- */
 
 
diff --git a/src/applications/packages/storage/PhabricatorPackagesPublisherNameNgrams.php b/src/applications/packages/storage/PhabricatorPackagesPublisherNameNgrams.php
new file mode 100644
--- /dev/null
+++ b/src/applications/packages/storage/PhabricatorPackagesPublisherNameNgrams.php
@@ -0,0 +1,14 @@
+<?php
+
+final class PhabricatorPackagesPublisherNameNgrams
+  extends PhabricatorPackagesNgrams {
+
+  public function getNgramKey() {
+    return 'publishername';
+  }
+
+  public function getColumnName() {
+    return 'name';
+  }
+
+}
diff --git a/src/applications/packages/storage/PhabricatorPackagesVersion.php b/src/applications/packages/storage/PhabricatorPackagesVersion.php
--- a/src/applications/packages/storage/PhabricatorPackagesVersion.php
+++ b/src/applications/packages/storage/PhabricatorPackagesVersion.php
@@ -9,7 +9,8 @@
     PhabricatorDestructibleInterface,
     PhabricatorSubscribableInterface,
     PhabricatorProjectInterface,
-    PhabricatorConduitResultInterface {
+    PhabricatorConduitResultInterface,
+    PhabricatorNgramsInterface {
 
   protected $name;
   protected $packagePHID;
@@ -174,6 +175,17 @@
   }
 
 
+/* -(  PhabricatorNgramsInterface  )----------------------------------------- */
+
+
+  public function newNgrams() {
+    return array(
+      id(new PhabricatorPackagesVersionNameNgrams())
+        ->setValue($this->getName()),
+    );
+  }
+
+
 /* -(  PhabricatorConduitResultInterface  )---------------------------------- */
 
 
diff --git a/src/applications/packages/storage/PhabricatorPackagesVersionNameNgrams.php b/src/applications/packages/storage/PhabricatorPackagesVersionNameNgrams.php
new file mode 100644
--- /dev/null
+++ b/src/applications/packages/storage/PhabricatorPackagesVersionNameNgrams.php
@@ -0,0 +1,14 @@
+<?php
+
+final class PhabricatorPackagesVersionNameNgrams
+  extends PhabricatorPackagesNgrams {
+
+  public function getNgramKey() {
+    return 'versionname';
+  }
+
+  public function getColumnName() {
+    return 'name';
+  }
+
+}
diff --git a/src/applications/packages/typeahead/PhabricatorPackagesPackageDatasource.php b/src/applications/packages/typeahead/PhabricatorPackagesPackageDatasource.php
--- a/src/applications/packages/typeahead/PhabricatorPackagesPackageDatasource.php
+++ b/src/applications/packages/typeahead/PhabricatorPackagesPackageDatasource.php
@@ -4,7 +4,7 @@
   extends PhabricatorTypeaheadDatasource {
 
   public function getBrowseTitle() {
-    return pht('Browse Packagess');
+    return pht('Browse Packages');
   }
 
   public function getPlaceholderText() {