Exposed Solr Hooks (6.x-1.x) for developers
- hook_apachesolr_modify_query(&$query, &$params, $caller);
-
Any module performing a search should call apachesolr_modify_query($query, $params, 'modulename'). That function then invokes this hook. It allows modules to modify the query object and params array. $caller indicates which module is invoking the hook.
Example:
function my_module_apachesolr_modify_query(&$query, &$params, $caller) { // I only want to see articles by the admin! $query->add_filter("uid", 1); }Also we can add "query" filters .An example is :
$query->add_filter("_query_", '{!geofilt sfield=location pt=36.7344685,-6.43353209 d=10}'); - hook_apachesolr_cck_fields_alter(&$mappings)
-
Add or alter index mappings for CCK types. The default mappings array handles just
text and integer fields with option widgets:$mappings['text'] = array( 'optionwidgets_select' => array('callback' => '', 'index_type' => 'string', 'facets' => TRUE), 'optionwidgets_buttons' => array('callback' => '', 'index_type' => 'string', 'facets' => TRUE), 'optionwidgets_onoff' => array('callback' => '', 'index_type' => 'string', 'facets' => TRUE), ); $mappings['number_integer'] = array( 'optionwidgets_select' => array('callback' => '', 'index_type' => 'sint', 'facets' => TRUE), 'optionwidgets_buttons' => array('callback' => '', 'index_type' => 'sint', 'facets' => TRUE), 'optionwidgets_onoff' => array('callback' => '', 'index_type' => 'sint', 'facets' => TRUE), );This array has the form $mappings[$field_data_type][$field_widget_type]. In your _alter hook implementation you can add additional field types such as:
$mappings['number_integer']['number'] = array('callback' => '', 'index_type' => 'integer');You can also add a mapping for a specific field. This will take precedence over any
mapping for a general field type. A field-specific mapping would look like:$mappings['per-field']['field_model_name'] = array('callback' => '', 'index_type' => 'string');or
$mappings['per-field']['field_model_price'] = array('callback' => '', 'index_type' => 'float');If a callback is provided, it should have the signature my_callback($node, $cck_field_name), This function will be called before hook_apachesolr_update_index and should return a list of the value(s) which will be indexed in that field.
- hook_apachesolr_node_exclude($node)
- This is invoked by apachesolr.module for each node to be added to the index - if any module returns TRUE, the node is skipped for indexing. For example, this is used by apachesolr_search module to exclude certain node types from the index.
- hook_apachesolr_update_index(&$document, $node)
- Allows a module to change the contents of the $document object before it is sent to the Solr Server. To add a new field to the document, you should generally use one of the pre-defined dynamic fields. Follow the naming conventions for the type of data being added based on the schema.xml file.
- hook_apachesolr_search_result_alter(&$doc)
- The is invoked by apachesolr_search.module for each document returned in a search - new in 6.x-dev as a replacement for the call to hook_nodeapi().
- hook_apachesolr_process_results(&$results)
- Invoked by apachesolr_search.module on the results array, after hook_apachesolr_search_result_alter above.
- hook_apachesolr_sort_links_alter(&$sort_links)
- Called by the sort link block code. Allows other modules to modify, add or remove sorts.
This post may be helpful: Using hook_apachesolr_cck_field_mappings() [Updated on April 20, 2010]
Help improve this page
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion