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"))))));
ジェントルナッジ:コードをフォーマットしてください。質問とコードが明確に提示されていないときに、人々が助けてくれるのはずっと難しくなります:) –
'index'ではどのようなマッピングが行われますか? 'GET/{index}/_ mapping'を発行したときに返されるものをあなたの質問に追加できますか? –