【问题标题】:Creating an Index with English Analyzer using Nest使用 Nest 使用英语分析器创建索引
【发布时间】:2018-11-05 15:03:09
【问题描述】:

我正在使用 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""english_stemmer" 等传递什么

问题 2:如果我使用 English Analyzer,Elasticsearch 会自动识别出“Barbecue”和“BBQ”这两个词是同义词吗?还是我需要明确地将同义词列表传递给 ES?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    查看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 分析器不会为您执行自动同义词扩展,您需要配置与您的搜索问题相关的同义词。关于同义词,您有两种选择

    1. 在索引输入的索引时间执行同义词扩展。这将以相对固定的方法为代价来加快搜索速度。
    2. 在查询时对查询输入执行同义词扩展。这会导致搜索速度变慢,但可以灵活地在需要时更轻松地添加新的同义词映射。

    您始终可以同时使用这两种方法,即为您期望与您的搜索用例相关的同义词编制索引,并在查询时添加新的同义词,因为您发现它们与您的用例相关.

    【讨论】:

    • 非常感谢拉斯。我是否可以通过在 POCO 类中的 MyProperty 上放置 [Text(Analyzer = "english")] 属性来达到同样的效果?
    • 如果我采用第一种方法,是否有标准的常用同义词列表可供我下载和使用?
    • 使用该属性将起作用,您还需要调用AutoMap() 以考虑该属性。关于同义词,这是一个非常广泛的问题。可以使用常见的数据集,如 WordNet (wordnet.princeton.edu)。请务必阅读权威指南 re: synonyms (elastic.co/guide/en/elasticsearch/guide/current/synonyms.html)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2014-07-30
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多