/** * Return a list of all searchable field for the current type (by locale code). * * @param string $localeCode Locale code * * @return array. */ public function getSearchFields($localeCode) { $searchFields = parent::getSearchFields($localeCode); $advancedSettingsPathPrefix = 'elasticsearch_advanced_search_settings/fulltext_relevancy/'; $searchInCategoryName = (bool) Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name'); if ($searchInCategoryName) { $enableFuzzySearch = (bool) Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name_enable_fuzzy'); $fuzziness = $enableFuzzySearch ? Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name_fuzziness') : false; $prefixLength = Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name_prefix_length'); $usedInAutocomplete = (bool) Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name_use_in_autocomplete'); $searchFields['category_name_' . $localeCode] = array('weight' => Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name_weight'), 'fuzziness' => $fuzziness, 'prefix_length' => $prefixLength, 'used_in_autocomplete' => true); } return $searchFields; }
/** * Return a list of all searchable field for the current type (by locale code). * * @param string $languageCode Language code. * @param string $searchType Type of search currentlty used. * @param string $analyzer Allow to force the analyzer used for the field (whitesapce, ...). * * @return array. */ public function getSearchFields($languageCode, $searchType = null, $analyzer = null) { $searchFields = parent::getSearchFields($languageCode, $searchType, $analyzer); $advancedSettingsPathPrefix = 'elasticsearch_advanced_search_settings/fulltext_relevancy/'; $searchInCategorySettingsPathPrefix = $advancedSettingsPathPrefix . 'search_in_category_name_'; $isSearchable = (bool) Mage::getStoreConfig($advancedSettingsPathPrefix . 'search_in_category_name'); if (in_array($searchType, array(self::SEARCH_TYPE_FUZZY, self::SEARCH_TYPE_PHONETIC))) { $isSearchable = $isSearchable && (bool) Mage::getStoreConfig($searchInCategorySettingsPathPrefix . 'fuzzy'); } else { if ($searchType == self::SEARCH_TYPE_AUTOCOMPLETE) { $isSearchable = $isSearchable && (bool) Mage::getStoreConfig($searchInCategorySettingsPathPrefix . 'use_in_autocomplete'); } } if ($isSearchable) { $weight = (int) Mage::getStoreConfig($searchInCategorySettingsPathPrefix . 'weight'); $analyzer = $this->_getDefaultAnalyzerBySearchType($languageCode, $searchType); $searchFields[] = sprintf("%s^%s", $this->getFieldName('category_name', $languageCode, self::FIELD_TYPE_SEARCH, $analyzer), $weight); } return $searchFields; }