Page MenuHomePhabricator

D21127.id50312.diff
No OneTemporary

D21127.id50312.diff

diff --git a/src/applications/search/ngrams/PhabricatorSearchNgrams.php b/src/applications/search/ngrams/PhabricatorSearchNgrams.php
--- a/src/applications/search/ngrams/PhabricatorSearchNgrams.php
+++ b/src/applications/search/ngrams/PhabricatorSearchNgrams.php
@@ -63,9 +63,6 @@
case 'index':
$token = ' '.$token.' ';
break;
- case 'prefix':
- $token = ' '.$token;
- break;
}
$len = (strlen($token) - 2);
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
@@ -2411,30 +2411,29 @@
protected function buildNgramsJoinClause(AphrontDatabaseConnection $conn) {
$flat = array();
foreach ($this->ngrams as $spec) {
- $index = $spec['index'];
- $value = $spec['value'];
$length = $spec['length'];
- if ($length >= 3) {
- $ngrams = $index->getNgramsFromString($value, 'query');
- $prefix = false;
- } else if ($length == 2) {
- $ngrams = $index->getNgramsFromString($value, 'prefix');
- $prefix = false;
- } else {
- $ngrams = array(' '.$value);
- $prefix = true;
+ if ($length < 3) {
+ continue;
}
+ $index = $spec['index'];
+ $value = $spec['value'];
+
+ $ngrams = $index->getNgramsFromString($value, 'query');
+
foreach ($ngrams as $ngram) {
$flat[] = array(
'table' => $index->getTableName(),
'ngram' => $ngram,
- 'prefix' => $prefix,
);
}
}
+ if (!$flat) {
+ return array();
+ }
+
// MySQL only allows us to join a maximum of 61 tables per query. Each
// ngram is going to cost us a join toward that limit, so if the user
// specified a very long query string, just pick 16 of the ngrams
@@ -2456,31 +2455,18 @@
foreach ($flat as $spec) {
$table = $spec['table'];
$ngram = $spec['ngram'];
- $prefix = $spec['prefix'];
$alias = 'ngm'.$idx++;
- if ($prefix) {
- $joins[] = qsprintf(
- $conn,
- 'JOIN %T %T ON %T.objectID = %Q AND %T.ngram LIKE %>',
- $table,
- $alias,
- $alias,
- $id_column,
- $alias,
- $ngram);
- } else {
- $joins[] = qsprintf(
- $conn,
- 'JOIN %T %T ON %T.objectID = %Q AND %T.ngram = %s',
- $table,
- $alias,
- $alias,
- $id_column,
- $alias,
- $ngram);
- }
+ $joins[] = qsprintf(
+ $conn,
+ 'JOIN %T %T ON %T.objectID = %Q AND %T.ngram = %s',
+ $table,
+ $alias,
+ $alias,
+ $id_column,
+ $alias,
+ $ngram);
}
return $joins;

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 16, 5:33 AM (1 d, 22 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6716162
Default Alt Text
D21127.id50312.diff (2 KB)

Event Timeline