我试图用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