我試圖用NEST c#客戶端在ElasticSearch中查詢沒有口音的查詢,我的數據具有帶口音的葡萄牙拉丁字。見代碼如下:使用NEST C#客戶端的ElasticSearch區分重音查詢
var result = client.Search<Book>(s => s
.From(0)
.Size(20)
.Fields(f => f.Title)
.FacetTerm(f => f.OnField(of => of.Genre))
.Query(q => q.QueryString(qs => qs.Query("sao")))
);
此搜索沒有發現任何內容。我在該指數上的數據包含許多標題,如:「SãoCristóvan」,「SãoGonçalo」。
var settings = new IndexSettings();
settings.NumberOfReplicas = 1;
settings.NumberOfShards = 5;
settings.Analysis.Analyzers.Add("snowball", new Nest.SnowballAnalyzer { Language = "Portuguese" });
var idx5 = client.CreateIndex("idx5", settings);
我怎樣才能讓查詢 「騷」,找到 「聖保羅」 使用ElasticSearch?
我認爲必須創建具有正確屬性的索引,但我已經嘗試過許多設置。
或原始模式:
{ "idx" : { "settings" : { "index.analysis.filter.jus_stemmer.name" : "brazilian", "index.analysis.filter.jus_stop._lang_" : "brazilian" } } }
我怎樣才能使搜索和忽略的口音?
感謝朋友,
我試過設置它,但它沒有工作! settings.Analysis.Analyzers.Add(「standard」,new Nest.StandardAnalyzer()); settings.Analysis.TokenFilters.Add(「ascii」,new AsciiFoldingTokenFilter()); settings.Analysis.TokenFilters.Add(「小寫」,新的Nest.LowercaseTokenFilter()); settings.Analysis.Analyzers.Add(「lang」,new Nest.LanguageAnalyzer(Language.Brazilian){StopWords = new List {「com」,「quem」}}); settings.Analysis.Analyzers.Add(「snowball」,new Nest.SnowballAnalyzer {Language =「Brazilian」}); –
2013-05-02 19:40:46
你用最後的ASCIIFoldingFilter來試試嗎?真的不確定哪個更合適。它怎麼不起作用?它是否像以前一樣執行操作,拋出異常,無法獲得結果? – femtoRgon 2013-05-02 19:48:41