@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add "bin/search query" for debugging query execution

Summary:
Ref T13000. Currently, queries can only be executed from the web UI, which requires logging in as a user. I really want to avoid doing that wherever we can, but being able to execute queries on an instance (and, particularly, see the ngrams and timings on the underlying lookups) would have been helpful in several cases.

Improve tooling a bit in advance of the "common ngrams" stuff going out since it seems likely that it will be useful if issues arise.

Test Plan: Ran `bin/search query --query ...`, got useful minimal output. Ran with `--trace` to get internals.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13000

Differential Revision: https://secure.phabricator.com/D18690

+57
+2
src/__phutil_library_map__.php
··· 3950 3950 'PhabricatorSearchManagementIndexWorkflow' => 'applications/search/management/PhabricatorSearchManagementIndexWorkflow.php', 3951 3951 'PhabricatorSearchManagementInitWorkflow' => 'applications/search/management/PhabricatorSearchManagementInitWorkflow.php', 3952 3952 'PhabricatorSearchManagementNgramsWorkflow' => 'applications/search/management/PhabricatorSearchManagementNgramsWorkflow.php', 3953 + 'PhabricatorSearchManagementQueryWorkflow' => 'applications/search/management/PhabricatorSearchManagementQueryWorkflow.php', 3953 3954 'PhabricatorSearchManagementWorkflow' => 'applications/search/management/PhabricatorSearchManagementWorkflow.php', 3954 3955 'PhabricatorSearchNgrams' => 'applications/search/ngrams/PhabricatorSearchNgrams.php', 3955 3956 'PhabricatorSearchNgramsDestructionEngineExtension' => 'applications/search/engineextension/PhabricatorSearchNgramsDestructionEngineExtension.php', ··· 9532 9533 'PhabricatorSearchManagementIndexWorkflow' => 'PhabricatorSearchManagementWorkflow', 9533 9534 'PhabricatorSearchManagementInitWorkflow' => 'PhabricatorSearchManagementWorkflow', 9534 9535 'PhabricatorSearchManagementNgramsWorkflow' => 'PhabricatorSearchManagementWorkflow', 9536 + 'PhabricatorSearchManagementQueryWorkflow' => 'PhabricatorSearchManagementWorkflow', 9535 9537 'PhabricatorSearchManagementWorkflow' => 'PhabricatorManagementWorkflow', 9536 9538 'PhabricatorSearchNgrams' => 'PhabricatorSearchDAO', 9537 9539 'PhabricatorSearchNgramsDestructionEngineExtension' => 'PhabricatorDestructionEngineExtension',
+55
src/applications/search/management/PhabricatorSearchManagementQueryWorkflow.php
··· 1 + <?php 2 + 3 + final class PhabricatorSearchManagementQueryWorkflow 4 + extends PhabricatorSearchManagementWorkflow { 5 + 6 + protected function didConstruct() { 7 + $this 8 + ->setName('query') 9 + ->setSynopsis( 10 + pht('Run a search query. Intended for debugging and development.')) 11 + ->setArguments( 12 + array( 13 + array( 14 + 'name' => 'query', 15 + 'param' => 'query', 16 + 'help' => pht('Raw query to execute.'), 17 + ), 18 + )); 19 + } 20 + 21 + public function execute(PhutilArgumentParser $args) { 22 + $viewer = $this->getViewer(); 23 + $raw_query = $args->getArg('query'); 24 + if (!strlen($raw_query)) { 25 + throw new PhutilArgumentUsageException( 26 + pht('Specify a query with --query.')); 27 + } 28 + 29 + $engine = id(new PhabricatorSearchApplicationSearchEngine()) 30 + ->setViewer($viewer); 31 + 32 + $saved = $engine->newSavedQuery(); 33 + $saved->setParameter('query', $raw_query); 34 + 35 + $query = $engine->buildQueryFromSavedQuery($saved); 36 + $pager = $engine->newPagerForSavedQuery($saved); 37 + 38 + $results = $engine->executeQuery($query, $pager); 39 + if ($results) { 40 + foreach ($results as $result) { 41 + echo tsprintf( 42 + "%s\t%s\n", 43 + $result->getPHID(), 44 + $result->getName()); 45 + } 46 + } else { 47 + echo tsprintf( 48 + "%s\n", 49 + pht('No results.')); 50 + } 51 + 52 + return 0; 53 + } 54 + 55 + }