c# - 使用 NEST C# 客户端的 ElasticSearch 重音不敏感查询

标签 c# lucene elasticsearch nest

我正在尝试使用 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ão Cristóvan”、“São Gonç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 查询“sao”并找到“são”?

我认为必须创建具有正确属性的索引,但我已经尝试过很多设置,例如。

或原始模式:


    {
     "idx" : {
       "settings" : {
         "index.analysis.filter.jus_stemmer.name" : "brazilian",
         "index.analysis.filter.jus_stop._lang_" : "brazilian"
       }
     }
    }

如何进行搜索并忽略重音符号?

谢谢 friend ,

最佳答案

查看解决方案:

使用 putty 执行连接到 elasticsearch 搜索:

curl -XPOST 'localhost:9200/idx30/_close'

curl -XPUT 'localhost:9200/idx30/_settings' -d '{
            "index.analysis.analyzer.default.filter.0": "standard",
            "index.analysis.analyzer.default.tokenizer": "standard",
            "index.analysis.analyzer.default.filter.1": "lowercase",
            "index.analysis.analyzer.default.filter.2": "stop",
            "index.analysis.analyzer.default.filter.3": "asciifolding",
            "index.number_of_replicas": "1"
}'

curl -XPOST 'localhost:9200/idx30/_open'

将“idx30”替换为您的索引名称

完成!

关于c# - 使用 NEST C# 客户端的 ElasticSearch 重音不敏感查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16342077/

相关文章:

c# - 在表单中接受用户输入

c# - 如何在动态 CSharpCodeProvider 脚本中添加对 Outlook VSTO 的引用

java - Lucene SpanNearQuery 与 java 中的复合词

scala - 具有多个连接的 Slick Reactive Streams

c# - 在 Xamarin MAC 应用程序中检测 Wifi SSID

c# - Web api post方法上的空参数

sqlite - 今天最快的全文搜索?

java - Elastic Search Lucene 公式计算 使用 Java

sorting - 如何按匹配排序优先选择最左边的单词

json - 尝试从带有Elasticsearch的多个术语的查询中获取过滤后的响应