/** * Performs special search initialization for the result plugin. * * @see classes/pluginbase/tx_solr_pluginbase_PluginBase#initializeSearch() */ protected function initializeSearch() { parent::initializeSearch(); $this->initializeAdditionalFilters(); // TODO check whether a search has been conducted already? if ($this->solrAvailable && (isset($this->piVars['q']) || $this->conf['search.']['allowEmptyQuery'])) { $this->piVars['q'] = trim($this->piVars['q']); if ($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']['logging.']['query.']['searchWords']) { t3lib_div::devLog('received search query', 'tx_solr', 0, array($this->piVars['q'])); } $query = t3lib_div::makeInstance('tx_solr_Query', $this->piVars['q']); if (isset($this->conf['search.']['query.']['minimumMatch']) && strlen($this->conf['search.']['query.']['minimumMatch'])) { $query->setMinimumMatch($this->conf['search.']['query.']['minimumMatch']); } if (!empty($this->conf['search.']['query.']['boostFunction'])) { $query->setBoostFunction($this->conf['search.']['query.']['boostFunction']); } if (!empty($this->conf['search.']['query.']['boostQuery'])) { $query->setBoostQuery($this->conf['search.']['query.']['boostQuery']); } if ($this->conf['enableDebugMode']) { $query->setDebugMode(); } if ($this->conf['search.']['highlighting']) { $query->setHighlighting(TRUE, $this->conf['search.']['highlighting.']['fragmentSize']); } if ($this->conf['search.']['spellchecking']) { $query->setSpellchecking(); } if ($this->conf['search.']['faceting']) { $query->setFaceting(); $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['modifySearchQuery']['faceting'] = 'EXT:solr/classes/query/modifier/class.tx_solr_query_modifier_faceting.php:tx_solr_query_modifier_Faceting'; } // access $query->setUserAccessGroups(explode(',', $GLOBALS['TSFE']->gr_list)); $query->setSiteHash(tx_solr_Util::getSiteHash()); $language = 0; if ($GLOBALS['TSFE']->sys_language_uid) { $language = $GLOBALS['TSFE']->sys_language_uid; } $query->addFilter('language:' . $language); foreach ($this->additionalFilters as $additionalFilter) { $query->addFilter($additionalFilter); } // sorting if ($this->conf['searchResultsViewComponents.']['sorting']) { $query->setSorting(); } $flexformSorting = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'sortBy', 'sQuery'); if (!empty($flexformSorting)) { $query->addQueryParameter('sort', $flexformSorting); } $this->query = $query; } }
/** * Performs special search initialization for the result plugin. * * @see classes/pluginbase/tx_solr_pluginbase_PluginBase#initializeSearch() */ protected function initializeSearch() { parent::initializeSearch(); $this->initializeAdditionalFilters(); }