Page MenuHomePhabricator

D8185.diff
No OneTemporary

D8185.diff

Index: src/applications/maniphest/search/ManiphestSearchIndexer.php
===================================================================
--- src/applications/maniphest/search/ManiphestSearchIndexer.php
+++ src/applications/maniphest/search/ManiphestSearchIndexer.php
@@ -81,6 +81,8 @@
time());
}
+ $this->indexCustomFields($doc, $task);
+
return $doc;
}
}
Index: src/applications/people/search/PhabricatorUserSearchIndexer.php
===================================================================
--- src/applications/people/search/PhabricatorUserSearchIndexer.php
+++ src/applications/people/search/PhabricatorUserSearchIndexer.php
@@ -17,9 +17,6 @@
$doc->setDocumentCreated($user->getDateCreated());
$doc->setDocumentModified($user->getDateModified());
- // TODO: Index the blurbs from their profile or something? Probably not
- // actually useful...
-
$doc->addRelationship(
$user->isUserActivated()
? PhabricatorSearchRelationship::RELATIONSHIP_OPEN
@@ -28,6 +25,8 @@
PhabricatorPeoplePHIDTypeUser::TYPECONST,
time());
+ $this->indexCustomFields($doc, $user);
+
return $doc;
}
}
Index: src/applications/project/search/PhabricatorProjectSearchIndexer.php
===================================================================
--- src/applications/project/search/PhabricatorProjectSearchIndexer.php
+++ src/applications/project/search/PhabricatorProjectSearchIndexer.php
@@ -17,6 +17,9 @@
$doc->setDocumentCreated($project->getDateCreated());
$doc->setDocumentModified($project->getDateModified());
+ $this->indexSubscribers($doc);
+ $this->indexCustomFields($doc, $project);
+
// NOTE: This could be more full-featured, but for now we're mostly
// interested in the side effects of indexing.
Index: src/applications/search/index/PhabricatorSearchDocumentIndexer.php
===================================================================
--- src/applications/search/index/PhabricatorSearchDocumentIndexer.php
+++ src/applications/search/index/PhabricatorSearchDocumentIndexer.php
@@ -106,6 +106,29 @@
}
}
+ protected function indexCustomFields(
+ PhabricatorSearchAbstractDocument $doc,
+ PhabricatorCustomFieldInterface $object) {
+
+ // Rebuild the ApplicationSearch indexes. These are internal and not part of
+ // the fulltext search, but putting them in this workflow allows users to
+ // use the same tools to rebuild the indexes, which is easy to understand.
+
+ $field_list = PhabricatorCustomField::getObjectFields(
+ $object,
+ PhabricatorCustomField::ROLE_APPLICATIONSEARCH);
+
+ $field_list->setViewer($this->getViewer());
+ $field_list->readFieldsFromStorage($object);
+ $field_list->rebuildIndexes($object);
+
+ // We could also allow fields to provide fulltext content, and index it
+ // here on the document. No one has asked for this yet, though, and the
+ // existing "search" key isn't a good fit to interpret to mean we should
+ // index stuff here, since it can be set on a lot of fields which don't
+ // contain anything resembling fulltext.
+ }
+
private function dispatchDidUpdateIndexEvent(
$phid,
PhabricatorSearchAbstractDocument $document) {
Index: src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
===================================================================
--- src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -591,6 +591,11 @@
// need it to be up to date once the next page loads, but if we don't go
// there we we could move it into search once search moves to the daemons.
+ // It now happens in the search indexer as well, but the search indexer is
+ // always daemonized, so the logic above still potentially holds. We could
+ // possibly get rid of this. The major motivation for putting it in the
+ // indexer was to enable reindexing to work.
+
$fields = PhabricatorCustomField::getObjectFields(
$object,
PhabricatorCustomField::ROLE_APPLICATIONSEARCH);

File Metadata

Mime Type
text/plain
Expires
Oct 18 2024, 10:13 PM (4 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6728938
Default Alt Text
D8185.diff (4 KB)

Event Timeline