Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F4812676
D26042.1749261375.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
7 KB
Referenced Files
None
Subscribers
None
D26042.1749261375.diff
View Options
diff --git a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php
--- a/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php
+++ b/src/applications/search/engineextension/PhabricatorSearchEngineExtension.php
@@ -5,6 +5,10 @@
private $viewer;
private $searchEngine;
+ /**
+ * @return string The EXTENSIONKEY of the PhabricatorSearchEngineExtension
+ * subclass
+ */
final public function getExtensionKey() {
return $this->getPhobjectClassConstant('EXTENSIONKEY');
}
@@ -14,6 +18,9 @@
return $this;
}
+ /**
+ * @return PhabricatorUser
+ */
final public function getViewer() {
return $this->viewer;
}
@@ -24,22 +31,43 @@
return $this;
}
+ /**
+ * @return PhabricatorApplicationSearchEngine A subclass of
+ * PhabricatorApplicationSearchEngine
+ */
final public function getSearchEngine() {
return $this->searchEngine;
}
+ /**
+ * @return bool
+ */
abstract public function isExtensionEnabled();
+ /**
+ * @return string Description of the Search Engine Extension
+ */
abstract public function getExtensionName();
+ /**
+ * @return bool
+ */
abstract public function supportsObject($object);
public function getExtensionOrder() {
return 7000;
}
+ /**
+ * @return array<PhabricatorSearchField> Subclasses of
+ * PhabricatorSearchField, or an empty array
+ */
public function getSearchFields($object) {
return array();
}
+ /**
+ * @return array<PhabricatorSearchEngineAttachment> Subclasses of
+ * PhabricatorSearchEngineAttachment, or an empty array
+ */
public function getSearchAttachments($object) {
return array();
}
@@ -64,6 +92,11 @@
return array();
}
+ /**
+ * @return map<string, PhabricatorSearchEngineExtension> Array of
+ * PhabricatorSearchEngineExtension extension keys and the
+ * PhabricatorSearchEngineExtension subclasses
+ */
final public static function getAllExtensions() {
return id(new PhutilClassMapQuery())
->setAncestorClass(__CLASS__)
diff --git a/src/applications/search/ferret/PhabricatorFerretEngine.php b/src/applications/search/ferret/PhabricatorFerretEngine.php
--- a/src/applications/search/ferret/PhabricatorFerretEngine.php
+++ b/src/applications/search/ferret/PhabricatorFerretEngine.php
@@ -6,8 +6,18 @@
private $ferretFunctions;
private $templateObject;
+ /**
+ * @return string Application name in lower-case, e.g. 'maniphest'
+ */
abstract public function getApplicationName();
+ /**
+ * @return string Object name in lower-case, e.g. 'task'
+ */
abstract public function getScopeName();
+ /**
+ * @return string New instance of the corresponding
+ * PhabricatorApplicationSearchEngine subclass
+ */
abstract public function newSearchEngine();
public function getDefaultFunctionKey() {
@@ -47,10 +57,16 @@
return $this->fieldMap[$raw_name];
}
+ /**
+ * @return PhutilSearchStemmer New instance of PhutilSearchStemmer
+ */
public function newStemmer() {
return new PhutilSearchStemmer();
}
+ /**
+ * @return string
+ */
public function newTermsCorpus($raw_corpus) {
$term_corpus = strtr(
$raw_corpus,
@@ -108,6 +124,10 @@
/* -( Schema )------------------------------------------------------------- */
+ /**
+ * @return string Name of database table, e.g. 'calendar_event_fdocument' or
+ * 'maniphest_task_fdocument' or 'phame_post_fdocument'
+ */
public function getDocumentTableName() {
$application = $this->getApplicationName();
$scope = $this->getScopeName();
@@ -152,6 +172,10 @@
);
}
+ /**
+ * @return string Name of database table, e.g. 'calendar_event_ffield' or
+ * 'maniphest_task_ffield' or 'phame_post_ffield'
+ */
public function getFieldTableName() {
$application = $this->getApplicationName();
$scope = $this->getScopeName();
@@ -183,6 +207,10 @@
);
}
+ /**
+ * @return string Name of database table, e.g. 'calendar_event_fngrams' or
+ * 'maniphest_task_fngrams' or 'phame_post_fngrams'
+ */
public function getNgramsTableName() {
$application = $this->getApplicationName();
$scope = $this->getScopeName();
@@ -213,6 +241,11 @@
);
}
+ /**
+ * @return string Name of database table, e.g.
+ * 'calendar_event_fngrams_common' or 'maniphest_task_fngrams_common' or
+ * 'phame_post_fngrams_common'
+ */
public function getCommonNgramsTableName() {
$application = $this->getApplicationName();
$scope = $this->getScopeName();
diff --git a/src/applications/search/ferret/PhabricatorFerretMetadata.php b/src/applications/search/ferret/PhabricatorFerretMetadata.php
--- a/src/applications/search/ferret/PhabricatorFerretMetadata.php
+++ b/src/applications/search/ferret/PhabricatorFerretMetadata.php
@@ -11,6 +11,10 @@
return $this;
}
+ /**
+ * @return PhabricatorFerretEngine A subclass of PhabricatorFerretEngine,
+ * e.g. DiffusionCommitFerretEngine or ManiphestTaskFerretEngine
+ */
public function getEngine() {
return $this->engine;
}
@@ -20,6 +24,9 @@
return $this;
}
+ /**
+ * @return string PHID of a search result
+ */
public function getPHID() {
return $this->phid;
}
@@ -29,10 +36,16 @@
return $this;
}
+ /**
+ * @return int
+ */
public function getRelevance() {
return $this->relevance;
}
+ /**
+ * @return PhutilSortVector
+ */
public function getRelevanceSortVector() {
$engine = $this->getEngine();
diff --git a/src/applications/search/ferret/function/FerretSearchFunction.php b/src/applications/search/ferret/function/FerretSearchFunction.php
--- a/src/applications/search/ferret/function/FerretSearchFunction.php
+++ b/src/applications/search/ferret/function/FerretSearchFunction.php
@@ -3,14 +3,34 @@
abstract class FerretSearchFunction
extends Phobject {
+ /**
+ * @return string Ferret function name, e.g. 'title', 'body', 'comment',
+ * 'core', 'all'
+ */
abstract public function getFerretFunctionName();
+ /**
+ * @return string Ferret field key, e.g. 'titl', 'body', 'cmnt', 'core',
+ * 'full'
+ */
abstract public function getFerretFieldKey();
+ /**
+ * @return bool
+ */
abstract public function supportsObject(PhabricatorFerretInterface $object);
+ /**
+ * @param string $name
+ * @return string Lower-case $name
+ */
final public static function getNormalizedFunctionName($name) {
return phutil_utf8_strtolower($name);
}
+ /**
+ * @param string $function_name
+ * @return void
+ * @throws Exception if $function_name is invalid
+ */
final public static function validateFerretFunctionName($function_name) {
if (!preg_match('/^[a-zA-Z-]+\z/', $function_name)) {
throw new Exception(
@@ -22,6 +42,12 @@
}
}
+ /**
+ * @param string $field_key Ferret search engine field key, supposed to be
+ * four characters and only lowercase latin letters
+ * @return void
+ * @throws Exception if $field_key is invalid
+ */
final public static function validateFerretFunctionFieldKey($field_key) {
if (!preg_match('/^[a-z]{4}\z/', $field_key)) {
throw new Exception(
@@ -33,6 +59,9 @@
}
}
+ /**
+ * @return array<string,FerretSearchFunction>
+ */
final public static function newFerretSearchFunctions() {
$extensions = PhabricatorFulltextEngineExtension::getAllExtensions();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jun 7, 01:56 (8 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1753063
Default Alt Text
D26042.1749261375.diff (7 KB)
Attached To
Mode
D26042: More Search-related PhpDoc additions
Attached
Detach File
Event Timeline
Log In to Comment