You are here

function recommender_precompute_mlt in Recommender API 7.5

File

./recommender.module, line 130
Providing generic recommender system algorithms.

Code

function recommender_precompute_mlt($mlt_delta, $nid_list) {
  if (!module_exists('apachesolr_search')) {
    return FALSE;
  }
  $block = apachesolr_search_mlt_block_load($mlt_delta);
  if ($block) {
    $env_id = !empty($block['mlt_env_id']) ? $block['mlt_env_id'] : '';
    try {
      $solr = apachesolr_get_solr($env_id);
      foreach ($nid_list as $nid) {
        $docs = apachesolr_search_mlt_suggestions($block, apachesolr_document_id($nid), $solr);
        if (!empty($docs)) {
          db_delete('recommender_similarity')
            ->condition('source_id', $nid)
            ->condition('recommender', $mlt_delta)
            ->execute();
          $rows = array();
          foreach ($docs as $doc) {

            // attention: here we can't retrieve similarity score because MLT block don't specify that.
            // to retrieve similarity score, use customized query.
            $rows[] = array(
              $nid,
              $doc->entity_id,
            );
          }
          recommender_insert_rows('similarity', $mlt_delta, $rows);
        }

        #var_dump($nid, $docs);
      }
    } catch (Exception $e) {
      watchdog('Apache Solr', nl2br(check_plain($e
        ->getMessage())), NULL, WATCHDOG_ERROR);
    }
  }
}