2014-06-18 29 views
7

Używam klejnotu elasticsearch-rails w mojej aplikacji Rails, aby uprościć integrację z Elasticsearch. Próbuję użyć phonetic analysis plugin, więc muszę zdefiniować niestandardowy analizator i niestandardowy filtr dla mojego indeksu.Custom Analyzer elasticsearch-rails

Próbowałem ten kawałek kodu w celu przeprowadzenia analizy niestandardowej z soundex filtrem fonetycznej, ale nie jest on z wiadomości wyjątek:

[!!!] Błąd podczas tworzenia indeksu: Elasticsearch: : Transport :: Transport :: Błędy :: BadRequest [400] {"Błąd": "MapperParsingException [odwzorowanie [call_sentence]]; zagnieżdżone: MapperParsingException [Analyzer [{tokenizer = standard, filter = [standard, małe litery, metaphoner]} nie znaleziono dla pola [fonetycznego]]; "," status ": 400}

# Set up index configuration and mapping 
# 
settings index: { number_of_shards: 1, number_of_replicas: 0 } do 
    mapping do 
    indexes :text, type: 'multi_field' do 
     indexes :processed, analyzer: 'snowball' 
     indexes :phone, {analyzer: { 
     tokenizer: "standard", 
     filter: ["standard", "lowercase", "metaphoner"] 
     }, filter: { 
     metaphoner: { 
      type: "phonetic", 
      encoder: "soundex", 
      replace: false 
     } 
     }} 
     indexes :raw, analyzer: 'keyword' 
    end 
    end 
end 

Odpowiedz

2

Dobra, ja zmodyfikowany elasticsearch.yml config zawierać fonetycznego analizator

#################################### Index #################################### 
index: 
    analysis: 
    analyzer: 
     phonetic_analyzer: 
     tokenizer: standard 
     filter: [metaphoner] 
    filter: 
     metaphoner: 
     type: phonetic 
     encoder: doublemetaphone 
     replace: true 
13

Można również określić go w ustawieniach zadzwonić:

settings index: { 
    number_of_shards: 1, 
    number_of_replicas: 0, 
    analysis: { 
     filter: { 
     metaphoner: { 
      type: 'phonetic', 
      encoder: doublemetaphone, 
      replace: true, 
     } 
     }, 
     analyzer: { 
     phonetic_analyzer: { 
      tokenizer: 'standard', 
      filter: ["standard", "lowercase", "metaphoner"], 
     } 
     } 
    } 
    } do 
    mapping do 
     indexes :text, type: 'multi_field' do 
     indexes :processed, analyzer: 'snowball' 
     indexes :phone, analyzer: 'phonetic_analyzer' 
     indexes :raw, analyzer: 'keyword' 
     end 
    end 
end