1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-14 10:52:41 +01:00
phorge-phorge/resources/sql/autopatches/20150105.conpsearch.sql
epriestley a455e50e29 Build a Conpherence thread index
Summary:
Ref T3165. Builds a dedicated index for Conpherence to avoid scale/policy filtering concerns.

  - This is pretty one-off but I think it's generally OK.
  - There's no UI for it.
  - `ConpherenceFulltextQuery` is very low-level. You would need to do another query on the PHIDs it returns to actually show anything to the user.
  - The `previousTransactionPHID` is so you can load chat context efficiently. Specifically, if you want to show results like this:

> previous line of context
> **line of chat that matches the query**
> next line of context

...you can read the previous lines out of `previousTransactionPHID` directly, and the next lines by issuing one query with `WHERE previousTransactionPHID IN (...)`.

I'm not 100% sure this is useful, but it seemed like a reasonable thing to provide, since there's no way to query this efficiently otherwise and I figure a lot of chat might make way more sense with a couple of lines of context.

Test Plan:
  - Indexed a thread manually (whole thing indexed).
  - Indexed a thread by updating it (just the new comment indexed).
  - Wrote a hacky test script and got reasonable-looking query results.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T3165

Differential Revision: https://secure.phabricator.com/D11234
2015-01-06 10:24:30 -08:00

14 lines
578 B
SQL

CREATE TABLE {$NAMESPACE}_conpherence.conpherence_index (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
threadPHID VARBINARY(64) NOT NULL,
transactionPHID VARBINARY(64) NOT NULL,
previousTransactionPHID VARBINARY(64),
corpus longtext
CHARACTER SET {$CHARSET_FULLTEXT}
COLLATE {$COLLATE_FULLTEXT}
NOT NULL,
KEY `key_thread` (threadPHID),
UNIQUE KEY `key_transaction` (transactionPHID),
UNIQUE KEY `key_previous` (previousTransactionPHID),
FULLTEXT KEY `key_corpus` (corpus)
) ENGINE=MyISAM DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT};