/**
  * 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;
 }
 /**
  * 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;
 }
 /**
  * Get mapping properties as stored into the index
  *
  * @return array
  */
 protected function _getMappingProperties()
 {
     $mapping = parent::_getMappingProperties(true);
     $mapping['properties']['path'] = array('type' => 'string');
     return $mapping;
 }