2017-03-22 17 views
0

C#のネストでは弾性を使用しています。インデックス時間にアナライザを作成しますが、検索時間には動作しません。私はない文書。ここでエラスティック・ネスト。アナライザを使った検索は機能しません。アナライザは検出できません。

は、私はすでに2つのアナライザー( "ギリシャ語"、 "カスタム")

を作成して述べたように私のクラス

public class Car { 
    Text(Analyzer = "greek",SearchAnalyzer ="custom",Index = true,IncludeInAll = true)] 
    public string SERVICE_DESC { get; set; } 
} 

そして、ここでは私の検索クエリが

var response = client.Search<Cars>(n => n 
    .Index(index) 
    .Type(type) 
    .Size(searchSize) 
    .From(0) 
    .TrackScores(true) 
    .Query(q => q 
    .Match(qs => qs.Field(fieldsForSearchList[0]).Analyzer("custom") 
    .Operator(Operator.And).Query("*"+searchWord+"*")))); 

です

var response = client.CreateIndex(index, s => s.Settings(s1 => s1.NumberOfShards(5) 
    .NumberOfReplicas(5) 
    .Analysis(a => a.TokenFilters(t => t 
    .IcuTransform("greeklatin", it => it.Id("Greek-Latin; NFD; [:NonspacingMark:] Remove; NFC")// 
    .Drection(IcuTransformDirection.Forward)) // 
    .IcuTransform("latingreek", lg => lg.Id("Greek-Latin; NFD; [:Nonspacing Mark:] Remove; NFC") 
    .Direction(IcuTransformDirection.Reverse)) 
    .EdgeNGram("greekedge", ed => ed.MaxGram(50) 
    .MinGram(1) 
    .Side(EdgeNGramSide.Front)) 
    .Stop("greekstop", sw => sw.StopWords()) 
    .Lowercase("greeklowercase", gl => gl.Language(Language.Greek.ToString())) 
    .KeywordMarker("greekkeywords", gk => gk.Keywords("")).Stemmer("greekstemmer", gs => gs.Language(Language.Greek.ToString()))) 
    .CharFilters(ma => ma.Mapping("hmap", map => map.Mappings("h=>η"))).Analyzers(a1 => a1.Custom("greek", t =>t.Tokenizer("standard").Filters("greekedge",/* "greekstop",*/ "greeklowercase", "greekkeywords",/*"greekstemmer",*/ "greeklatin", "latingreek") 
    .CharFilters("hmap")) .Custom("custom", cu => cu.Tokenizer("standard").Filters(/*"greekstop",*/ "greeklowercase", "greekkeywords",/* "greekstemmer" ,*/ "greeklatin", "latingreek") 
    .CharFilters("hmap")))))); 
+2

ジェントルナッジ:コードをフォーマットしてください。質問とコードが明確に提示されていないときに、人々が助けてくれるのはずっと難しくなります:) –

+1

'index'ではどのようなマッピングが行われますか? 'GET/{index}/_ mapping'を発行したときに返されるものをあなたの質問に追加できますか? –

答えて

0

私は理由はわかりませんが、フィールドをエラスティックにマッピングすると、最初の文字を小文字にする傾向があります。フィールド "SERVICE"を追加するには自動的に "sERVICE"などに変換されました。したがって、少なくとも最初の文字は、クラスのマッピングとフィールド宣言の両方で小文字にする必要があります。

関連する問題