mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-19 12:00:55 +01:00
Allow standard custom fields to be indexed in global fulltext search
Summary: Fixes T6399. This allows you to use global search to find projects by searching for text in their descriptions. Test Plan: Added a unique word to a project description, reindexed it, searched, got a hit. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T6399 Differential Revision: https://secure.phabricator.com/D10748
This commit is contained in:
parent
6410d8fd16
commit
de40bc0c1d
4 changed files with 25 additions and 2 deletions
|
@ -11,6 +11,7 @@ final class PhabricatorProjectDescriptionField
|
|||
'name' => pht('Description'),
|
||||
'type' => 'remarkup',
|
||||
'description' => pht('Short project description.'),
|
||||
'fulltext' => PhabricatorSearchField::FIELD_BODY,
|
||||
),
|
||||
));
|
||||
}
|
||||
|
|
|
@ -102,6 +102,9 @@ When defining custom fields using a configuration option like
|
|||
defaults to `true`). (Note: Empty fields are not shown.)
|
||||
- **search**: Show this field on the application's search interface, allowing
|
||||
users to filter objects by the field value.
|
||||
- **fulltext**: Index the text in this field as part of the object's global
|
||||
full-text index. This allows users to find the object by searching for
|
||||
the field's contents using global search.
|
||||
- **caption**: A caption to display underneath the field (optional).
|
||||
- **required**: True if the user should be required to provide a value.
|
||||
- **options**: If type is set to **select**, provide options for the dropdown
|
||||
|
|
|
@ -339,8 +339,6 @@ final class PhabricatorCustomFieldList extends Phobject {
|
|||
}
|
||||
$field->updateAbstractDocument($document);
|
||||
}
|
||||
|
||||
return $document;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -402,4 +402,25 @@ abstract class PhabricatorStandardCustomField
|
|||
return 'std:control:'.$key;
|
||||
}
|
||||
|
||||
public function shouldAppearInGlobalSearch() {
|
||||
return $this->getFieldConfigValue('fulltext', false);
|
||||
}
|
||||
|
||||
public function updateAbstractDocument(
|
||||
PhabricatorSearchAbstractDocument $document) {
|
||||
|
||||
$field_key = $this->getFieldConfigValue('fulltext');
|
||||
|
||||
// If the caller or configuration didn't specify a valid field key,
|
||||
// generate one automatically from the field index.
|
||||
if (!is_string($field_key) || (strlen($field_key) != 4)) {
|
||||
$field_key = '!'.substr($this->getFieldIndex(), 0, 3);
|
||||
}
|
||||
|
||||
$field_value = $this->getFieldValue();
|
||||
if (strlen($field_value)) {
|
||||
$document->addField($field_key, $field_value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue