function apachesolr_search_search_results in Apache Solr Search 7
Same name and namespace in other branches
- 8 apachesolr_search.module \apachesolr_search_search_results()
- 6.3 apachesolr_search.module \apachesolr_search_search_results()
Executes search depending on the conditions given. See apachesolr_search.pages.inc for another use of this function
2 calls to apachesolr_search_search_results()
- apachesolr_search_custom_page in ./
apachesolr_search.pages.inc - Returns search results on user defined search pages.
- apachesolr_search_search_execute in ./
apachesolr_search.module - Implements hook_search_execute().
File
- ./
apachesolr_search.module, line 875 - Provides a content search implementation for node content for use with the Apache Solr search application.
Code
function apachesolr_search_search_results($keys = NULL, $conditions = NULL, $search_page = NULL) {
$params = array();
$results = array();
// Process the search form. Note that if there is $_POST data,
// search_form_submit() will cause a redirect to search/[module path]/[keys],
// which will get us back to this page callback. In other words, the search
// form submits with POST but redirects to GET. This way we can keep
// the search query URL clean as a whistle.
if (empty($_POST['form_id']) || $_POST['form_id'] != 'apachesolr_search_custom_page_search_form' && $_POST['form_id'] != 'search_form' && $_POST['form_id'] != 'search_block_form') {
// Check input variables
if (empty($search_page)) {
$search_page = apachesolr_search_page_load('core_search');
// Verify if it actually loaded
if (empty($search_page)) {
// Something must have been really messed up.
apachesolr_failure(t('Solr search'), $keys);
return array();
}
}
if (empty($conditions)) {
$conditions = apachesolr_search_conditions_default($search_page);
}
// Sort options from the conditions array.
// @see apachesolr_search_conditions_default()
// See This condition callback to find out how.
$solrsort = isset($conditions['apachesolr_search_sort']) ? $conditions['apachesolr_search_sort'] : '';
// What to do when we have an initial empty search
$empty_search_behavior = isset($search_page['settings']['apachesolr_search_browse']) ? $search_page['settings']['apachesolr_search_browse'] : '';
try {
$env_id = $search_page['env_id'] == -1 ? variable_get('apachesolr_default_environment', '') : $search_page['env_id'];
$solr = apachesolr_get_solr($env_id);
// Default parameters
$params['fq'] = isset($conditions['fq']) ? $conditions['fq'] : array();
$params['rows'] = $search_page['settings']['apachesolr_search_per_page'];
if (empty($search_page['settings']['apachesolr_search_spellcheck'])) {
// Spellcheck needs to have a string as false/true
$params['spellcheck'] = 'false';
}
else {
$params['spellcheck'] = 'true';
}
// Empty text Behavior
if (!$keys && !isset($conditions['f']) && ($empty_search_behavior == 'browse' || $empty_search_behavior == 'blocks')) {
// Pass empty search behavior as string on to apachesolr_search_search_page()
// Hardcoded apachesolr name since we rely on this for the facets
$context['page_id'] = $search_page['page_id'];
$context['search_type'] = 'apachesolr_search_browse';
apachesolr_search_run_empty('apachesolr', $params, $search_page['search_path'], $solr, $context);
$results['apachesolr_search_browse'] = $empty_search_behavior;
if ($empty_search_behavior == 'browse') {
// Hide sidebar blocks for content-area browsing instead.
apachesolr_suppress_blocks($env_id, TRUE);
}
}
elseif ($keys || isset($conditions['f']) || $empty_search_behavior == 'results') {
// Don't allow local params to pass through to EDismax from the url.
// We also remove any remaining leading {! since that causes a parse
// error in Solr.
$keys = preg_replace('/^(?:{![^}]*}\\s*)*(?:{!\\s*)*/', ' ', $keys);
$params['q'] = $keys;
// Hardcoded apachesolr name since we rely on this for the facets
$context['page_id'] = $search_page['page_id'];
$context['search_type'] = 'apachesolr_search_results';
$results = apachesolr_search_run('apachesolr', $params, $solrsort, $search_page['search_path'], pager_find_page(), $solr, $context);
}
} catch (Exception $e) {
apachesolr_log_exception($search_page['env_id'], $e);
apachesolr_failure(t('Solr search'), $keys);
}
}
return $results;
}