2017-03-22 7 views
0

C#의 네스트와 함께 신축성을 사용하고 있습니다. 인덱스 시간에는 분석기를 만들지 만 검색 시간에는 작동하지 않습니다. 나에게 문서가 없다. 여기 애널리스트로 검색하면 애널라이저가 작동하지 않습니다. 애널라이저를 감지 할 수 없습니다.

내 검색 쿼리 내 수업

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"등으로 변환됩니다. 따라서 최소한 첫 문자는 매핑 및 필드 선언에서 모두 소문자 여야합니다.