Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/ferret/PhabricatorFerretEngine.php
<?php | <?php | ||||
abstract class PhabricatorFerretEngine extends Phobject { | abstract class PhabricatorFerretEngine extends Phobject { | ||||
abstract public function newNgramsObject(); | abstract public function newNgramsObject(); | ||||
abstract public function newDocumentObject(); | abstract public function newDocumentObject(); | ||||
abstract public function newFieldObject(); | abstract public function newFieldObject(); | ||||
public function getDefaultFunctionKey() { | |||||
return 'all'; | |||||
} | |||||
public function getFieldForFunction($function) { | |||||
$function = phutil_utf8_strtolower($function); | |||||
$map = $this->getFunctionMap(); | |||||
if (!isset($map[$function])) { | |||||
throw new PhutilSearchQueryCompilerSyntaxException( | |||||
pht( | |||||
'Unknown search function "%s". Supported functions are: %s.', | |||||
$function, | |||||
implode(', ', array_keys($map)))); | |||||
} | |||||
return $map[$function]['field']; | |||||
} | |||||
public function getAllFunctionFields() { | |||||
$map = $this->getFunctionMap(); | |||||
$fields = array(); | |||||
foreach ($map as $key => $spec) { | |||||
$fields[] = $spec['field']; | |||||
} | |||||
return $fields; | |||||
} | |||||
protected function getFunctionMap() { | |||||
return array( | |||||
'all' => array( | |||||
'field' => PhabricatorSearchDocumentFieldType::FIELD_ALL, | |||||
'aliases' => array( | |||||
'any', | |||||
), | |||||
), | |||||
'title' => array( | |||||
'field' => PhabricatorSearchDocumentFieldType::FIELD_TITLE, | |||||
'aliases' => array(), | |||||
), | |||||
'body' => array( | |||||
'field' => PhabricatorSearchDocumentFieldType::FIELD_BODY, | |||||
'aliases' => array(), | |||||
), | |||||
'core' => array( | |||||
'field' => PhabricatorSearchDocumentFieldType::FIELD_CORE, | |||||
'aliases' => array(), | |||||
), | |||||
'comment' => array( | |||||
'field' => PhabricatorSearchDocumentFieldType::FIELD_COMMENT, | |||||
'aliases' => array( | |||||
'comments', | |||||
), | |||||
), | |||||
); | |||||
} | |||||
public function newStemmer() { | public function newStemmer() { | ||||
return new PhutilSearchStemmer(); | return new PhutilSearchStemmer(); | ||||
} | } | ||||
public function tokenizeString($value) { | public function tokenizeString($value) { | ||||
$value = trim($value, ' '); | $value = trim($value, ' '); | ||||
$value = preg_split('/ +/', $value); | $value = preg_split('/ +/', $value); | ||||
return $value; | return $value; | ||||
▲ Show 20 Lines • Show All 91 Lines • Show Last 20 Lines |