1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- /**
- * @file
- * Contains materio_sapi.module.
- */
- use Drupal\Core\Routing\RouteMatchInterface;
- use Solarium\QueryType\Select\Query\Query;
- use Drupal\search_api\Query\QueryInterface;
- /**
- * Implements hook_help().
- */
- function materio_sapi_help($route_name, RouteMatchInterface $route_match) {
- switch ($route_name) {
- // Main module help for the materio_sapi module.
- case 'help.page.materio_sapi':
- $output = '';
- $output .= '<h3>' . t('About') . '</h3>';
- $output .= '<p>' . t('Search Api Materio module') . '</p>';
- return $output;
- default:
- }
- }
- /**
- * Implements hook_search_api_solr_query_alter();
- */
- function materio_sapi_search_api_solr_query_alter(Query $solarium_query, QueryInterface $query) {
- if ($termid = (int)$query->getOption('termid')) {
- // get solarium fileds name
- $index = $query->getIndex();
- $solrFields = $index->getServerInstance()
- ->getBackend()
- ->getSolrFieldNames($index);
- // tag_tid"itm_tag_tid"
- // thesaurus_tid"itm_thesaurus_tid"
- $tag_fname = $solrFields['tag_tid'];
- $thes_fname = $solrFields['thesaurus_tid'];
- // $solarium_query->addParam('bf', "recip(abs(ms(NOW,{$solrField})),3.16e-11,10,0.1)");
- // $bfparam = "if(or(gt(termfreq({$tag_fname},{$termid}),0),gt(termfreq({$thes_fname},{$termid}),0)),^21,0)";
- $bfparam = "if(or(exists(query({$tag_fname}:{$termid})),exists(query({$thes_fname}:{$termid}))),^21,0)";
- // boost=if(or(exists(query(itm_tag_tid:396)),exists(query(itm_thesaurus_tid:396))),^21,0 )
- $solarium_query->addParam('boost', $bfparam);
- // $solarium_query->addParam('debugQuery', 'on');
- }
- }
|