getSimilarityTerms() public method

Identify similarity terms for a given submission.
public getSimilarityTerms ( $submissionId ) : null | array
$submissionId integer
return null | array An array of string keywords or null if some kind of error occurred.
 /**
  * @see templates/article/footer.tpl
  */
 function callbackTemplateArticlePageFooter($hookName, $params)
 {
     $smarty =& $params[1];
     $output =& $params[2];
     // Identify similarity terms for the given article.
     $displayedArticle = $smarty->get_template_vars('article');
     $articleId = $displayedArticle->getId();
     import('classes.search.ArticleSearch');
     $articleSearch = new ArticleSearch();
     $searchTerms = $articleSearch->getSimilarityTerms($articleId);
     if (empty($searchTerms)) {
         return false;
     }
     // If we got similarity terms then execute a search with...
     // ... request, journal and error messages, ...
     $request = PKPApplication::getRequest();
     $router = $request->getRouter();
     $journal = $router->getContext($request);
     $error = null;
     // ... search keywords ...
     $query = implode(' ', $searchTerms);
     $keywords = array(null => $query);
     // ... and pagination.
     $rangeInfo = Handler::getRangeInfo($request, 'articlesBySimilarity');
     $rangeInfo->setCount(RECOMMEND_BY_SIMILARITY_PLUGIN_COUNT);
     $results = $articleSearch->retrieveResults($request, $journal, $keywords, $error, null, null, $rangeInfo, array($articleId));
     $smarty->assign('articlesBySimilarity', $results);
     $smarty->assign('articlesBySimilarityQuery', $query);
     $output .= $smarty->fetch($this->getTemplatePath() . 'articleFooter.tpl');
     return false;
 }
Esempio n. 2
0
 /**
  * Redirect to a search query that shows documents
  * similar to the one identified by an article id in the
  * request.
  * @param $args array
  * @param $request Request
  */
 function similarDocuments($args, &$request)
 {
     $this->validate(null, $request);
     // Retrieve the (mandatory) ID of the article that
     // we want similar documents for.
     $articleId = $request->getUserVar('articleId');
     if (!is_numeric($articleId)) {
         $request->redirect(null, 'search');
     }
     // Check whether a search plugin provides terms for a similarity search.
     $articleSearch = new ArticleSearch();
     $searchTerms = $articleSearch->getSimilarityTerms($articleId);
     // Redirect to a search query with the identified search terms (if any).
     if (empty($searchTerms)) {
         $searchParams = null;
     } else {
         $searchParams = array('query' => implode(' ', $searchTerms));
     }
     $request->redirect(null, 'search', 'search', null, $searchParams);
 }