使用 Nest 使用 English Analyzer 创建索引
Creating an Index with English Analyzer using Nest
我正在使用 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,我也不确定我应该为"english_keywords"、[=31=传递什么],等等
问题2:如果我使用English Analyzer,Elasticsearch会自动识别术语:"Barbecue"和"BBQ"是同义词吗?或者我是否需要显式地将同义词列表传递给 ES?
查看 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")
)
)
)
)
);
将对 POCO
上的 MyProperty
字段使用内置的 english
分析器。
english
分析器不会为您执行自动同义词扩展,您需要配置与您的搜索问题相关的同义词。关于同义词,你有两个选择
- 在索引时对索引输入执行同义词扩展。这将以相对固定的方法为代价加快搜索速度。
- 在查询时对查询输入执行同义词扩展。这将导致搜索速度变慢,但提供了灵活性,可以在需要时更轻松地添加新的同义词映射。
您始终可以采用两者兼用的方法,即为您希望与搜索用例相关的同义词编制索引,并在查询时添加新的同义词,因为您发现它们与您的搜索用例相关用例。
我正在使用 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,我也不确定我应该为"english_keywords"、[=31=传递什么],等等
问题2:如果我使用English Analyzer,Elasticsearch会自动识别术语:"Barbecue"和"BBQ"是同义词吗?或者我是否需要显式地将同义词列表传递给 ES?
查看 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")
)
)
)
)
);
将对 POCO
上的 MyProperty
字段使用内置的 english
分析器。
english
分析器不会为您执行自动同义词扩展,您需要配置与您的搜索问题相关的同义词。关于同义词,你有两个选择
- 在索引时对索引输入执行同义词扩展。这将以相对固定的方法为代价加快搜索速度。
- 在查询时对查询输入执行同义词扩展。这将导致搜索速度变慢,但提供了灵活性,可以在需要时更轻松地添加新的同义词映射。
您始终可以采用两者兼用的方法,即为您希望与搜索用例相关的同义词编制索引,并在查询时添加新的同义词,因为您发现它们与您的搜索用例相关用例。