2013-06-24 23 views
14

Aramalarımın neden büyük/küçük harfe duyarlı olduğunu anlayamıyorum. Okuduğum her şey, ES'nin varsayılan olarak duyarsız olduğunu söylüyor.Vaka duyarsızlığı çalışmıyor

"query": { 
"bool": { 
    "must": [ 
    { 
     "wildcard": { 
     "name": { 
      "value": "Rae*" 
     } 
     } 
    } 
    ] 
} 

Bu başarısız ama "Rae *" olarak istediği işleri: joker, yani - ben indeksleme için standart analizörü belirtmek ve arama eşleştirmeleri var ama bazı şeyler hala küçük harfe duyarlı gibi görünüyor. 'Start-with' tipi aramalar için joker kullanmalıyım (varsayalım).

bir .NET uygulamasından ANDAE kullanıyorum ve böylece indeksi oluştururken analizörlerin belirterek ediyorum: basit analizörü kullanıyor Bu durumda

var settings = new IndexSettings(); 
    settings.NumberOfReplicas = _configuration.Replicas; 
    settings.NumberOfShards = _configuration.Shards; 
    settings.Add("index.refresh_interval", "10s"); 
    settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("keyword", new KeywordAnalyzer())); 
    settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("simple", new SimpleAnalyzer())); 

ancak standart bir aynı sonucu verir.

haritalama şuna benzer:

name: { 
    type: string 
    analyzer: simple 
    store: yes 
} 

Herkes sorun ne burada herhangi bir fikrin var mı?

Teşekkür

documentation itibaren
+1

ES'nin daha recend sürümü (2.3) ile bunun için tamamlanması suggester kullanabilirsiniz. – myusuf

+0

Aynı sorunu yaşıyorum. "query_string" denildiğinde bile ES 5.1'de çalışmaz, ancak 2.3'de çalıştı. !!!! – Telebh

cevap

24

,

"[joker sorgu] (analiz edilmez) bir joker ifadesini eşleşen alanlara sahip belgeleri maçları". arama terimi analiz edilmez

Çünkü, aslında arama sorgusu oluşturmadan önce bu analizi kendi başınıza çalıştırmayı gerekir. Bu durumda, bu sadece arama teriminizin küçük harfli olması gerektiği anlamına gelir. Alternatif olarak, query_string kullanabilirsiniz:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "query_string": { 
      "query": "name:Rae*" 
      } 
     } 
     ] 
    } 
    } 
} 
+0

EVET EVET EVET !!! Çok teşekkür ederim. – Jonesie