| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | <?php/** * @file * Hooks provided by the Search API Solr search module. *//** * @addtogroup hooks * @{ *//** * Lets modules alter a Solr search request before sending it. * * Apache_Solr_Service::search() is called afterwards with these parameters. * Please see this method for details on what should be altered where and what * is set afterwards. * * @param array $call_args *   An associative array containing all three arguments to the *   SearchApiSolrConnectionInterface::search() call ("query", "params" and *   "method") as references. * @param SearchApiQueryInterface $query *   The SearchApiQueryInterface object representing the executed search query. */function hook_search_api_solr_query_alter(array &$call_args, SearchApiQueryInterface $query) {  if ($query->getOption('foobar')) {    $call_args['params']['foo'] = 'bar';  }}/** * Change the way the index's field names are mapped to Solr field names. * * @param SearchApiIndex $index *   The index whose field mappings are altered. * @param array $fields *   An associative array containing the index field names mapped to their Solr *   counterparts. The special fields 'search_api_id' and 'search_api_relevance' *   are also included. */function hook_search_api_solr_field_mapping_alter(SearchApiIndex $index, array &$fields) {  if ($index->entity_type == 'node' && isset($fields['body:value'])) {    $fields['body:value'] = 'text';  }}/** * Alter Solr documents before they are sent to Solr for indexing. * * @param array $documents *   An array of SearchApiSolrDocument objects ready to be indexed, generated *   from $items array. * @param SearchApiIndex $index *   The search index for which items are being indexed. * @param array $items *   An array of items being indexed. */function hook_search_api_solr_documents_alter(array &$documents, SearchApiIndex $index, array $items) {  // Adds a "foo" field with value "bar" to all documents.  foreach ($documents as $document) {    $document->setField('foo', 'bar');  }}/** * Lets modules alter the search results returned from a Solr search. * * @param array $results *   The results array that will be returned for the search. * @param SearchApiQueryInterface $query *   The SearchApiQueryInterface object representing the executed search query. * @param object $response *   The Solr response object. */function hook_search_api_solr_search_results_alter(array &$results, SearchApiQueryInterface $query, $response) {  if (isset($response->facet_counts->facet_fields->custom_field)) {    // Do something with $results.  }}/** * Lets modules alter a Solr search request for a multi-index search. * * SearchApiSolrConnectionInterface::search() is called afterwards with these * parameters. Please see this method for details on what should be altered * where and what is set afterwards. * * @param array $call_args *   An associative array containing all three arguments to the *   SearchApiSolrConnectionInterface::search() call ("query", "params" and *   "method") as references. * @param SearchApiMultiQueryInterface $query *   The object representing the executed search query. */function hook_search_api_solr_multi_query_alter(array &$call_args, SearchApiMultiQueryInterface $query) {  if ($query->getOption('foobar')) {    $call_args['params']['foo'] = 'bar';  }}/** * Provide Solr dynamic fields as Search API data types. * * This serves as a placeholder for documenting additional keys for * hook_search_api_data_type_info() which are recognized by this module to * automatically support dynamic field types from the schema. * * @return array *   In addition to the keys for the individual types that are defined by *   hook_search_api_data_type_info(), the following keys are regonized: *   - prefix: The Solr field name prefix to use for this type. Should match *     two existing dynamic fields definitions with names "{PREFIX}s_*" and *     "{PREFIX}m_*". *   - always multiValued: (optional) If TRUE, only the dynamic field name *     prefix (without the "_*" portion) with multiValued="true" should be given *     by "prefix", instead of the common prefix part for both the single-valued *     and the multi-valued field. This should be the case for all fulltext *     fields, since they might already be tokenized by the Search API. Defaults *     to FALSE. * *@see hook_search_api_data_type_info() */function search_api_solr_hook_search_api_data_type_info() {  return array(    // You can use any identifier you want here, but it makes sense to use the    // field type name from schema.xml.    'edge_n2_kw_text' => array(      // Stock hook_search_api_data_type_info() info:      'name' => t('Fulltext (w/ partial matching)'),      'fallback' => 'text',      // Dynamic field with name="te_*".      'prefix' => 'te',      // Fulltext types should always be multi-valued.      'always multiValued' => TRUE,    ),    'tlong' => array(      // Stock hook_search_api_data_type_info() info:      'name' => t('TrieLong'),      'fallback' => 'integer',      // Dynamic fields with name="its_*" and name="itm_*".      'prefix' => 'it',    ),  );}/** * @} End of "addtogroup hooks". */
 |