Page MenuHomePhabricator

D18514.diff
No OneTemporary

D18514.diff

diff --git a/src/applications/search/constants/PhabricatorSearchDocumentFieldType.php b/src/applications/search/constants/PhabricatorSearchDocumentFieldType.php
--- a/src/applications/search/constants/PhabricatorSearchDocumentFieldType.php
+++ b/src/applications/search/constants/PhabricatorSearchDocumentFieldType.php
@@ -6,5 +6,6 @@
const FIELD_BODY = 'body';
const FIELD_COMMENT = 'cmnt';
const FIELD_ALL = 'full';
+ const FIELD_CORE = 'core';
}
diff --git a/src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php b/src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php
--- a/src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php
+++ b/src/applications/search/engineextension/PhabricatorFerretFulltextEngineExtension.php
@@ -32,6 +32,25 @@
$stemmer = new PhutilSearchStemmer();
$ngram_engine = id(new PhabricatorNgramEngine());
+ // Copy all of the "title" and "body" fields to create new "core" fields.
+ // This allows users to search "in title or body" with the "core:" prefix.
+ $document_fields = $document->getFieldData();
+ $virtual_fields = array();
+ foreach ($document_fields as $field) {
+ $virtual_fields[] = $field;
+
+ list($key, $raw_corpus) = $field;
+ switch ($key) {
+ case PhabricatorSearchDocumentFieldType::FIELD_TITLE:
+ case PhabricatorSearchDocumentFieldType::FIELD_BODY:
+ $virtual_fields[] = array(
+ PhabricatorSearchDocumentFieldType::FIELD_CORE,
+ $raw_corpus,
+ );
+ break;
+ }
+ }
+
$key_all = PhabricatorSearchDocumentFieldType::FIELD_ALL;
$empty_template = array(
@@ -44,7 +63,7 @@
$key_all => $empty_template,
);
- foreach ($document->getFieldData() as $field) {
+ foreach ($virtual_fields as $field) {
list($key, $raw_corpus) = $field;
if (!strlen($raw_corpus)) {
continue;
diff --git a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
--- a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
+++ b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
@@ -1406,6 +1406,8 @@
$function_map = array(
'all' => PhabricatorSearchDocumentFieldType::FIELD_ALL,
'title' => PhabricatorSearchDocumentFieldType::FIELD_TITLE,
+ 'body' => PhabricatorSearchDocumentFieldType::FIELD_BODY,
+ 'core' => PhabricatorSearchDocumentFieldType::FIELD_CORE,
);
$current_function = 'all';

File Metadata

Mime Type
text/plain
Expires
Sat, May 18, 6:29 AM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6274949
Default Alt Text
D18514.diff (2 KB)

Event Timeline