2016-04-13 20 views
0

ElasticSearch'ü özel bir dizin ve arama analizcisi ile kullanıyorum. Kullanıcı verilerini sorgulıyorum ve bazen dizelerde aynı oluşumlar var.ElasticSearch analyzer: indekste aynı sözcük oluşumlarını kaldırmanın bir yolu var mı?

Örnek: "Merhaba Dünya Merhaba Bay!" 2 kez "Merhaba" görebileceğiniz yer.

"Merhaba Dünya" için arama yapıyorsam, "Merhaba Dünya Merhaba Bay!" Ile daha iyi bir puan alacağım. "Merhaba Dünya" dan. Mantıklı olsa bile bu davranışı istemiyorum.

Yani, endeksleme ile aynı sözcük oluşumlarını kaldırmak mümkün mü? Örnek: "Merhaba Dünya Merhaba Bay!" => "Merhaba Dünya Bay!"

Bulunduğum haritalama ve ayarları:

settings index: { number_of_shards: 1, number_of_replicas: 1 }, analysis: { 
    analyzer: { 
     custom_analyzer: { 
     tokenizer: "custom_tokenizer", 
     filter: ["lowercase", "asciifolding", "custom_spliter"] 
     } 
    }, 
    filter: { 
     custom_spliter: { 
     type: "word_delimiter", 
     preserve_original: "true" 
     } 
    }, 
    tokenizer: { 
     custom_tokenizer: { 
     type: "nGram", 
     min_gram: "3", 
     max_gram: "3", 
     token_chars: [ "letter", "digit" ] 
     } 
    } 
    } do 
    mappings dynamic: 'false' do 
     indexes :searchable, analyzer: "custom_analyzer" 
    end 
    end 

mi-mümkün bunu yapmak için?

cevap

1

Bunu başarmak için analiz cihazına unique token filter ekleyebilirsiniz.
Aynı konumda meydana gelen yinelenen belirteçleri (örneğin: eş anlamlılar) veya herhangi bir konumu kaldırabilecek şekilde yapılandırmanıza izin verir.

+0

Sadece mükemmel çalışıyor! Teşekkürler –

İlgili konular