/** * List of the field used by the query. * For autocomplete we use only fields marked as used_in_autocomplete * * Warning : name field is weighted to 100. Should be configurable. * * @return array */ public function getSearchFields() { $allSearchFields = parent::getSearchFields(); $searchFields = array(); foreach ($allSearchFields as $fieldName => $currentFieldConfig) { if ($currentFieldConfig['used_in_autocomplete']) { if ($fieldName == 'name_fr') { $currentFieldConfig['weight'] = 100; } $searchFields[$fieldName] = $currentFieldConfig; } } return $searchFields; }
/** * Retturn field used in edge_ngram matching * * @return array */ public function getAutocompleSearchFields() { $analyzers = array('edge_ngram_front', 'edge_ngram_back'); $allFields = parent::getSearchFields(); $searchFields = array(); foreach ($allFields as $fieldName => $currentField) { $fieldName = current(explode('.', $fieldName)); if ($currentField['used_in_autocomplete']) { foreach ($analyzers as $analyzer) { $searchFields[] = sprintf('%s.%s^%d', $fieldName, $analyzer, $currentField['weight']); } } } return $searchFields; }