elasticsearch 电话号码分析器
我正在尝试使用C#app中的Nest为电话号码创建一个自定义分析器。以下内容似乎没有任何用处:
elasticsearch 电话号码分析器,
elasticsearch,nest,
elasticsearch,Nest,我正在尝试使用C#app中的Nest为电话号码创建一个自定义分析器。以下内容似乎没有任何用处: var settings = new IndexSettings { NumberOfReplicas = maximumReplicas ?? _configuration.Value.Replicas, NumberOfShards = _configuration.Value.Shards,
var settings = new IndexSettings
{
NumberOfReplicas = maximumReplicas ?? _configuration.Value.Replicas,
NumberOfShards = _configuration.Value.Shards,
};
settings.Add("index.refresh_interval", "10s");
settings.Add("merge.policy.merge_factor", "10");
settings.Add("search.slowlog.threshold.fetch.warn", "1s");
const string phoneorcodePattern = @"([^\\p{L})"; // ignore that this is silly
settings.Analysis.Tokenizers.Add(new KeyValuePair<string, TokenizerBase>("phoneorpostcode", new PatternTokenizer() { Pattern = phoneorcodePattern, Flags = "CASE_INSENSITIVE" }));
settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("phoneorpostcode", new CustomAnalyzer() { Tokenizer = "phoneorpostcode", Filter = new List<string> { "lowercase" } }));
// standard analzers
settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("keyword", new KeywordAnalyzer()));
settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("simple", new SimpleAnalyzer()));
// field mapping stuff here...
client.CreateIndex(_searchConnection.Settings.SearchIndexName, settings);
我得到:
{
"error" : "ElasticSearchIllegalArgumentException[failed to find analyzer [phoneorpostcode]]",
"status" : 400
}
问题:
1-为什么会出现错误?索引创建得很好,我使用分析器创建了字段
2-如何在映射中查看分析器
(3-什么是好的正则表达式?我需要删除所有空白,以便使用通配符查询。回答此问题的额外积分:)
干杯我已经破解了一个非常有效的解决方案
使用“09”“09123”“123”“12 3”等可以找到一些09 123 4567。也可以与字母一起使用,例如:0800 BLAHBLAH。对于.NET兼容的正则表达式,请尝试Expresso(Ultrapico),它附带许多示例。@Jonesie您能给我看一下完整的代码吗?您需要以某种方式将这些设置传递给CreateIndex或UpdateSettings。@MartijnLaarman嗯,之后有一堆代码来进行映射(在我自己设计的xml文件中定义),然后我只需执行以下操作:client.CreateIndex(_searchConnection.settings.SearchIndexName,settings);我已经更新了上面的示例以显示这一点。
{
"error" : "ElasticSearchIllegalArgumentException[failed to find analyzer [phoneorpostcode]]",
"status" : 400
}