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".
- */
|