function getResults($query) { $this->status_code = 1; $response['results'] = array(); $expr = parseExpression($query); $results = $expr->evaluate(); //echo "<pre>";print_r($rs);echo "</pre>";die; if (PEAR::isError($results)) { return false; } if (empty($results)) { $this->message = _kt('Your search did not return any results'); } $this->status_code = 0; $response['results'] = $results; return $response; }
print _kt('Command line search') . "...\n"; } if (empty($username)) { die(_kt("Please specify a username!")); } if (empty($expr)) { die(_kt("Please specify search criteria!")); } $ktapi = new KTAPI(); $result = $ktapi->start_session($username, $password); if (PEAR::isError($result)) { print _kt("Cannot locate user:"******" {$username}\n"; exit; } try { $expr = parseExpression($expr); $result = $expr->evaluate(); switch ($output) { case 'simple': foreach ($result['docs'] as $item) { print 'Document ID: ' . $item->DocumentID . ' Title:' . $item->Title . ' Relevance:' . $item->Rank . "\n"; } break; case 'csv': print "DocumentId,Title,Relevance\n"; foreach ($result['docs'] as $item) { print $item->DocumentID . ',' . $item->Title . ',' . $item->Rank . "\n"; } break; case 'xml': print "<result>\n";
public static function parseQuery($txtQuery, $exitOnSuccess = true) { try { $expr = parseExpression($txtQuery); if ($exitOnSuccess) { AjaxSearchHelper::createResponse(AjaxSearchHelper::STATUS_SUCCESS); } return $expr; } catch (Exception $e) { AjaxSearchHelper::createResponse(AjaxSearchHelper::STATUS_PARSE_PROBLEM, $e->getMessage()); } }
/** * This proceses any given search expression. * On success, it redirects to the searchResults page. * * @param string $query */ private function processQuery($query) { try { $expr = parseExpression($query); // bit of a hack // check for the isDeleted and isArchived keywords affecting status in the query if (strpos($query, 'IsDeleted') !== false || strpos($query, 'IsArchived') !== false) { $expr->setIncludeStatus(false); } $results = $expr->evaluate(); $results = resolveSearchShortcuts($results); usort($results['docs'], 'rank_compare'); $_SESSION['search2_results'] = serialize($results); $_SESSION['search2_query'] = $query; $_SESSION['search2_sort'] = 'rank'; $this->redirectTo('searchResults'); } catch (Exception $e) { $this->errorRedirectTo('guiBuilder', _kt('Could not process query.') . $e->getMessage()); } }
function processSearchExpression($query) { try { $expr = parseExpression($query); $rs = $expr->evaluate(ExprContext::DOCUMENT); $rs = $rs['docs']; if (empty($rs)) { return array(); } usort($rs, 'rank_compare'); $results = array(); foreach ($rs as $hit) { $item = array('document_id' => (int) $hit->DocumentID, 'custom_document_no' => 'n/a', 'oem_document_no' => (string) $hit->OemDocumentNo, 'relevance' => (double) $hit->Rank, 'text' => (string) $noText ? '' : urlencode($hit->Text), 'title' => (string) $hit->Title, 'document_type' => $hit->DocumentType, 'fullpath' => (string) $hit->FullPath, 'filename' => (string) $hit->Filename, 'filesize' => (int) $hit->Filesize, 'folder_id' => (int) $hit->FolderId, 'created_by' => (string) $hit->CreatedBy, 'created_date' => (string) $hit->DateCreated, 'modified_by' => (string) $hit->ModifiedBy, 'modified_date' => (string) $hit->DateModified, 'checked_out_by' => (string) $hit->CheckedOutUser, 'checked_out_date' => (string) $hit->DateCheckedOut, 'owned_by' => (string) $hit->Owner, 'version' => (double) $hit->Version, 'is_immutable' => (bool) $hit->Immutable, 'permissions' => $hit->Permissions, 'workflow' => (string) $hit->WorkflowOnly, 'workflow_state' => (string) $hit->WorkflowStateOnly, 'mime_type' => (string) $hit->MimeType, 'mime_icon_path' => (string) $hit->MimeIconPath, 'mime_display' => (string) $hit->MimeDisplay, 'storage_path' => (string) $hit->StoragePath, 'status' => (string) $hit->Status, 'is_available' => (bool) $hit->IsAvailable); $results[] = $item; } return $results; } catch (Exception $e) { return new PEAR_Error(_kt('Could not process query.') . $e->getMessage()); } }
function parseNamedExpression($ast, &$list) { $name = ast_get($ast, NodeKey::NAME); $value = parseExpression(ast_get($ast, NodeKey::VALUE)); if (is_numeric($name)) { $name = '_expr' . $name . '_'; } $list[$name] = $value; }
function parseSelectionWP($ast, $name, $header) { // Push LibraryManager so we can undo this waypoint's definitions. ob_start(); LibraryManager::Push(); $res = new GenerationInfo(); /*************** PROCESS AST ***************/ $attMap = parseAttributeMap(ast_get($ast, NodeKey::ATT_MAP), $res); $qFilters = ast_get($ast, NodeKey::FILTERS); $qSynth = ast_get($ast, NodeKey::SYNTH); $queries = []; foreach ($qFilters as $query => $qInfo) { $filterAST = ast_get($qInfo, NodeKey::ARGS); $gfAST = ast_get($qInfo, NodeKey::TYPE); if ($gfAST !== null) { $filter = parseNamedExpressionList($filterAST); } else { $filter = parseExpressionList($filterAST); } $gf = null; if ($gfAST !== null) { $gf = parseGF($gfAST); $gf = $gf->apply($filter); } if (ast_has($qInfo, NodeKey::CARGS)) { $cargs = parseLiteralList(ast_get($qInfo, NodeKey::CARGS)); } else { $cargs = []; } $sargs = ast_has($qInfo, NodeKey::SARGS) ? parseStateList(ast_get($qInfo, NodeKey::SARGS), $query) : []; $synths = array(); $synthAST = ast_get($ast, NodeKey::SYNTH); if (ast_has($synthAST, $query)) { $curSynths = ast_get($synthAST, $query); foreach ($curSynths as $curSynthAST) { $expr = parseExpression(ast_get($curSynthAST, NodeKey::EXPR)); $att = parseAttribute(ast_get($curSynthAST, NodeKey::ATT)); if ($att->type() == null) { AttributeManager::setAttributeType($att->name(), $expr->type()); $att = AttributeManager::lookupAttribute($att->name()); } else { if (canConvert($expr, $att->type())) { $expr = convertExpression($expr, $att->type()); } else { grokit_error('Unable to convert expression for synthesized attribute ' . $att->name() . ' from type ' . $expr->type() . ' to type ' . $att->type() . ' ' . $expr->source()); } } $synths[$att->name()] = $expr; } } $info = ['filters' => $filter, 'synths' => $synths, 'gf' => $gf, 'cargs' => $cargs, 'states' => $sargs]; $queries[$query] = $info; $res->addJob($query, $name); $res->absorbInfoList($filter); $res->absorbInfoList($synths); $res->absorbInfoList($cargs); $res->absorbStateList($sargs); if ($gf !== null) { $res->absorbInfo($gf); } } /*************** END PROCESS AST ***************/ // Get this waypoint's headers $myHeaders = $header . PHP_EOL . ob_get_clean(); // Only one file at the moment $filename = $name . '.cc'; $res->addFile($filename, $name); _startFile($filename); SelectionGenerate($name, $queries, $attMap); _endFile($filename, $myHeaders); // Pop LibraryManager again to get rid of this waypoint's declarations LibraryManager::Pop(); return $res; }