More Search-related PhpDoc additions
Summary: I'm still trying to understand search a bit better. As a side effect I add PhpDocs. Test Plan: Inspect parameter and return formats, types, content while searching in Phorge. Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Differential Revision: https://we.phorge.it/D26042
This commit is contained in:
parent
a7f94af9cf
commit
e410020f78
|
@ -5,6 +5,10 @@ abstract class PhabricatorSearchEngineExtension extends Phobject {
|
||||||
private $viewer;
|
private $viewer;
|
||||||
private $searchEngine;
|
private $searchEngine;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string The EXTENSIONKEY of the PhabricatorSearchEngineExtension
|
||||||
|
* subclass
|
||||||
|
*/
|
||||||
final public function getExtensionKey() {
|
final public function getExtensionKey() {
|
||||||
return $this->getPhobjectClassConstant('EXTENSIONKEY');
|
return $this->getPhobjectClassConstant('EXTENSIONKEY');
|
||||||
}
|
}
|
||||||
|
@ -14,6 +18,9 @@ abstract class PhabricatorSearchEngineExtension extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PhabricatorUser
|
||||||
|
*/
|
||||||
final public function getViewer() {
|
final public function getViewer() {
|
||||||
return $this->viewer;
|
return $this->viewer;
|
||||||
}
|
}
|
||||||
|
@ -24,22 +31,43 @@ abstract class PhabricatorSearchEngineExtension extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PhabricatorApplicationSearchEngine A subclass of
|
||||||
|
* PhabricatorApplicationSearchEngine
|
||||||
|
*/
|
||||||
final public function getSearchEngine() {
|
final public function getSearchEngine() {
|
||||||
return $this->searchEngine;
|
return $this->searchEngine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
abstract public function isExtensionEnabled();
|
abstract public function isExtensionEnabled();
|
||||||
|
/**
|
||||||
|
* @return string Description of the Search Engine Extension
|
||||||
|
*/
|
||||||
abstract public function getExtensionName();
|
abstract public function getExtensionName();
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
abstract public function supportsObject($object);
|
abstract public function supportsObject($object);
|
||||||
|
|
||||||
public function getExtensionOrder() {
|
public function getExtensionOrder() {
|
||||||
return 7000;
|
return 7000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<PhabricatorSearchField> Subclasses of
|
||||||
|
* PhabricatorSearchField, or an empty array
|
||||||
|
*/
|
||||||
public function getSearchFields($object) {
|
public function getSearchFields($object) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<PhabricatorSearchEngineAttachment> Subclasses of
|
||||||
|
* PhabricatorSearchEngineAttachment, or an empty array
|
||||||
|
*/
|
||||||
public function getSearchAttachments($object) {
|
public function getSearchAttachments($object) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
@ -64,6 +92,11 @@ abstract class PhabricatorSearchEngineExtension extends Phobject {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return map<string, PhabricatorSearchEngineExtension> Array of
|
||||||
|
* PhabricatorSearchEngineExtension extension keys and the
|
||||||
|
* PhabricatorSearchEngineExtension subclasses
|
||||||
|
*/
|
||||||
final public static function getAllExtensions() {
|
final public static function getAllExtensions() {
|
||||||
return id(new PhutilClassMapQuery())
|
return id(new PhutilClassMapQuery())
|
||||||
->setAncestorClass(__CLASS__)
|
->setAncestorClass(__CLASS__)
|
||||||
|
|
|
@ -6,8 +6,18 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
private $ferretFunctions;
|
private $ferretFunctions;
|
||||||
private $templateObject;
|
private $templateObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string Application name in lower-case, e.g. 'maniphest'
|
||||||
|
*/
|
||||||
abstract public function getApplicationName();
|
abstract public function getApplicationName();
|
||||||
|
/**
|
||||||
|
* @return string Object name in lower-case, e.g. 'task'
|
||||||
|
*/
|
||||||
abstract public function getScopeName();
|
abstract public function getScopeName();
|
||||||
|
/**
|
||||||
|
* @return string New instance of the corresponding
|
||||||
|
* PhabricatorApplicationSearchEngine subclass
|
||||||
|
*/
|
||||||
abstract public function newSearchEngine();
|
abstract public function newSearchEngine();
|
||||||
|
|
||||||
public function getDefaultFunctionKey() {
|
public function getDefaultFunctionKey() {
|
||||||
|
@ -47,10 +57,16 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
return $this->fieldMap[$raw_name];
|
return $this->fieldMap[$raw_name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PhutilSearchStemmer New instance of PhutilSearchStemmer
|
||||||
|
*/
|
||||||
public function newStemmer() {
|
public function newStemmer() {
|
||||||
return new PhutilSearchStemmer();
|
return new PhutilSearchStemmer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
public function newTermsCorpus($raw_corpus) {
|
public function newTermsCorpus($raw_corpus) {
|
||||||
$term_corpus = strtr(
|
$term_corpus = strtr(
|
||||||
$raw_corpus,
|
$raw_corpus,
|
||||||
|
@ -108,6 +124,10 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
|
|
||||||
/* -( Schema )------------------------------------------------------------- */
|
/* -( Schema )------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string Name of database table, e.g. 'calendar_event_fdocument' or
|
||||||
|
* 'maniphest_task_fdocument' or 'phame_post_fdocument'
|
||||||
|
*/
|
||||||
public function getDocumentTableName() {
|
public function getDocumentTableName() {
|
||||||
$application = $this->getApplicationName();
|
$application = $this->getApplicationName();
|
||||||
$scope = $this->getScopeName();
|
$scope = $this->getScopeName();
|
||||||
|
@ -152,6 +172,10 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string Name of database table, e.g. 'calendar_event_ffield' or
|
||||||
|
* 'maniphest_task_ffield' or 'phame_post_ffield'
|
||||||
|
*/
|
||||||
public function getFieldTableName() {
|
public function getFieldTableName() {
|
||||||
$application = $this->getApplicationName();
|
$application = $this->getApplicationName();
|
||||||
$scope = $this->getScopeName();
|
$scope = $this->getScopeName();
|
||||||
|
@ -183,6 +207,10 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string Name of database table, e.g. 'calendar_event_fngrams' or
|
||||||
|
* 'maniphest_task_fngrams' or 'phame_post_fngrams'
|
||||||
|
*/
|
||||||
public function getNgramsTableName() {
|
public function getNgramsTableName() {
|
||||||
$application = $this->getApplicationName();
|
$application = $this->getApplicationName();
|
||||||
$scope = $this->getScopeName();
|
$scope = $this->getScopeName();
|
||||||
|
@ -213,6 +241,11 @@ abstract class PhabricatorFerretEngine extends Phobject {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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() {
|
public function getCommonNgramsTableName() {
|
||||||
$application = $this->getApplicationName();
|
$application = $this->getApplicationName();
|
||||||
$scope = $this->getScopeName();
|
$scope = $this->getScopeName();
|
||||||
|
|
|
@ -11,6 +11,10 @@ final class PhabricatorFerretMetadata extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PhabricatorFerretEngine A subclass of PhabricatorFerretEngine,
|
||||||
|
* e.g. DiffusionCommitFerretEngine or ManiphestTaskFerretEngine
|
||||||
|
*/
|
||||||
public function getEngine() {
|
public function getEngine() {
|
||||||
return $this->engine;
|
return $this->engine;
|
||||||
}
|
}
|
||||||
|
@ -20,6 +24,9 @@ final class PhabricatorFerretMetadata extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string PHID of a search result
|
||||||
|
*/
|
||||||
public function getPHID() {
|
public function getPHID() {
|
||||||
return $this->phid;
|
return $this->phid;
|
||||||
}
|
}
|
||||||
|
@ -29,10 +36,16 @@ final class PhabricatorFerretMetadata extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
public function getRelevance() {
|
public function getRelevance() {
|
||||||
return $this->relevance;
|
return $this->relevance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PhutilSortVector
|
||||||
|
*/
|
||||||
public function getRelevanceSortVector() {
|
public function getRelevanceSortVector() {
|
||||||
$engine = $this->getEngine();
|
$engine = $this->getEngine();
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,34 @@
|
||||||
abstract class FerretSearchFunction
|
abstract class FerretSearchFunction
|
||||||
extends Phobject {
|
extends Phobject {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string Ferret function name, e.g. 'title', 'body', 'comment',
|
||||||
|
* 'core', 'all'
|
||||||
|
*/
|
||||||
abstract public function getFerretFunctionName();
|
abstract public function getFerretFunctionName();
|
||||||
|
/**
|
||||||
|
* @return string Ferret field key, e.g. 'titl', 'body', 'cmnt', 'core',
|
||||||
|
* 'full'
|
||||||
|
*/
|
||||||
abstract public function getFerretFieldKey();
|
abstract public function getFerretFieldKey();
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
abstract public function supportsObject(PhabricatorFerretInterface $object);
|
abstract public function supportsObject(PhabricatorFerretInterface $object);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $name
|
||||||
|
* @return string Lower-case $name
|
||||||
|
*/
|
||||||
final public static function getNormalizedFunctionName($name) {
|
final public static function getNormalizedFunctionName($name) {
|
||||||
return phutil_utf8_strtolower($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) {
|
final public static function validateFerretFunctionName($function_name) {
|
||||||
if (!preg_match('/^[a-zA-Z-]+\z/', $function_name)) {
|
if (!preg_match('/^[a-zA-Z-]+\z/', $function_name)) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
|
@ -22,6 +42,12 @@ abstract class FerretSearchFunction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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) {
|
final public static function validateFerretFunctionFieldKey($field_key) {
|
||||||
if (!preg_match('/^[a-z]{4}\z/', $field_key)) {
|
if (!preg_match('/^[a-z]{4}\z/', $field_key)) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
|
@ -33,6 +59,9 @@ abstract class FerretSearchFunction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string,FerretSearchFunction>
|
||||||
|
*/
|
||||||
final public static function newFerretSearchFunctions() {
|
final public static function newFerretSearchFunctions() {
|
||||||
$extensions = PhabricatorFulltextEngineExtension::getAllExtensions();
|
$extensions = PhabricatorFulltextEngineExtension::getAllExtensions();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue