Page MenuHomePhabricator

D18254.id43901.diff
No OneTemporary

D18254.id43901.diff

diff --git a/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php b/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php
--- a/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php
+++ b/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php
@@ -235,7 +235,7 @@
$value = $stemmer->stemToken($value);
}
- if (phutil_utf8_strlen($value) < $min_length) {
+ if ($this->isShortToken($value, $min_length)) {
$fulltext_token->setIsShort(true);
continue;
}
@@ -549,4 +549,22 @@
return array($min_len, $stopwords);
}
+ private function isShortToken($value, $min_length) {
+ // NOTE: The engine tokenizes internally on periods, so terms in the form
+ // "ab.cd", where short substrings are separated by periods, do not produce
+ // any queryable tokens. These terms are meaningful if at least one
+ // substring is longer than the minimum length, like "example.py". See
+ // T12928.
+
+ $parts = preg_split('/[.]+/', $value);
+
+ foreach ($parts as $part) {
+ if (phutil_utf8_strlen($part) >= $min_length) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Oct 17 2024, 9:42 PM (4 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6723540
Default Alt Text
D18254.id43901.diff (1 KB)

Event Timeline