if (count($extendedQueryWordsArr) > 25) { $extendedQueryWordsArr = array_slice($extendedQueryWordsArr, 0, 25); } //preprint_r($extendedQueryWordsArr); // SEARCH INVERTED INDEX FOR DOCUMENTS $scoringTable = getScoredDocumentsFromInveretdIndex($extendedQueryWordsArr, $query, $isPhraseSearch, $isQuestion, $isColumnSearch, $columnSearchKeyValParams, $isConceptSearch, $lang, $isTransliterationSearch); if ($isQuestion) { $answerInformationContainerArr = answerUserQuestion($query, $queryWordsArr, $taggedSignificantWords, $scoringTable, $lang); $userQuestionAnswerConceptsArr = $answerInformationContainerArr['ANSWER_CONCEPTS']; $userQuestionAnswerVersesArr = $answerInformationContainerArr['ANSWER_VERSES']; //preprint_r($userQuestionAnswerConceptsArr); $queryWordsArr = array_merge($queryWordsArr, $userQuestionAnswerConceptsArr); } /// LOG QUERY //LOCATION SIGNIFICANT BEFORE handleEmptyResults because of exit inside if (!isDevEnviroment()) { $searchType = getSearchType($isPhraseSearch, $isQuestion, $isColumnSearch, $isConceptSearch, $isTransliterationSearch); logQuery($lang, $query, $searchType, count($scoringTable)); } // NOT RESULTS FOUND handleEmptyResults($scoringTable, $extendedQueryWordsArr, $query, $originalQuery, $isColumnSearch, $searchType, $lang); if (!$isQuestion && !$isColumnSearch) { // Check is some words were written incorrectly even if results are returned // اكثر الناس case should be أكثر $queryWordsWithoutDerivation = array_diff_assoc($extendedQueryWordsArr, $derivedWords); $postResultSuggestionArr = postResultSuggestions($lang, $originalQueryWordsArrSwaped); //echoN(memory_get_peak_usage()); // remove query words from suggestion /*foreach($queryWordsWithoutDerivation as $word => $dummy) { if ( isset($postResultSuggestionArr[$word])) unset($postResultSuggestionArr[$word]); }*/
define('SEARCH_STATUS_RESULT_READY', 6); define('SEARCH_STATUS_FAILED', 7); define('SEARCH_STATUS_TOO_MANY_RECORDS', 8); define('SEARCH_TIMEOUT', 300000000); //5 minutes define('POLLING_INTERVAL', 100000); //100ms $errorStatuses = array(SEARCH_STATUS_UNKNOWN, SEARCH_STATUS_SUSPENDED, SEARCH_STATUS_PARTIAL_RESULT_READY, SEARCH_STATUS_FAILED, SEARCH_STATUS_TOO_MANY_RECORDS); $requestId = $response; pollStatus($requestId, $errorStatuses); $decodedFinalResults = getDecodedFinalResults($requestId); if (empty($decodedFinalResults)) { throw new EmptyResponseException("No results retrieved from Chemspider."); } //add Data To DataGraph $searchType = getSearchType($this->Request->getPathWithoutExtension()); $resultBNode = '_:searchResult'; $this->DataGraph->add_literal_triple($resultBNode, RDF_TYPE, $searchType); $unreservedParameters = $this->Request->getUnreservedParams(); foreach ($unreservedParameters as $name => $value) { $processedName = str_replace('.', '#', $name); $predicate = OPS_CHEMSPIDER_PREFIX . $processedName; $this->DataGraph->add_literal_triple($resultBNode, $predicate, $value); } foreach ($decodedFinalResults as $elem) { $this->DataGraph->add_resource_triple($resultBNode, OPS_CHEMSPIDER_PREFIX . 'result', CHEMSPIDER_PREFIX . $elem); } $rdfData = $this->DataGraph->to_ntriples(); //assuming nothing else is in the graph //link pageUri to primaryTopic - resulted blank node $this->DataGraph->add_resource_triple($this->pageUri, FOAF . 'primaryTopic', $resultBNode);