我正在使用nest来创建我的Elasticsearch索引。我有两个问题:
问题1.如何添加设置以使用英语分析器并为标准分析器提供后备?
这就是我创建索引的方式:
Uri _node = new Uri("elasticUri");
ConnectionSettings _connectionSettings = new ConnectionSettings(_node)
.DefaultIndex("MyIndexName")
.DefaultMappingFor<POCO>(m => m
.IndexName("MyIndexName")
);
IElasticClient _elasticClient = new ElasticClient(_connectionSettings);
var createIndexResponse = _elasticClient.CreateIndex("MyIndexName", c => c
.Mappings(m => m
.Map<POCO>(d => d.AutoMap())
)
);
查看示例Here,我也不确定应该通过哪些&#34; english_keywords&#34; ,&#34; english_stemmer&#34; 等
问题2 :如果我使用英文分析器,Elasticsearch会自动意识到这些条款:&#34;烧烤&#34;和&#34;烧烤&#34;是同义词?或者我是否需要明确地将同义词列表传递给ES?
答案 0 :(得分:0)
查看configuring a built-in analyzer for an index的NEST文档。
documentation for the english
analyzer简单地演示了如何自行重新实现english
分析器,作为自定义分析器,内置分析组件,如果您需要自定义任何分析器部分分析。如果您不需要这样做,只需使用english
作为字段分析器的名称
client.CreateIndex("my_index", c => c
.Mappings(m => m
.Map<POCO>(mm => mm
.AutoMap()
.Properties(p => p
.Text(t => t
.Name(n => n.MyProperty)
.Analyzer("english")
)
)
)
)
);
将对english
上的MyProperty
字段使用内置POCO
分析器。
english
分析器不会为您执行自动同义词扩展,您需要配置与您的搜索问题相关的同义词。关于同义词,你有两个选择
您始终可以采用两种方法,即索引您希望与搜索用例相关的同义词,并在查询时添加新的同义词,因为您发现它们与您的用例相关