ElasticsearchCRUD使用(十二)【Elasticsearch的German分析器】

本文介绍如何使用Elasticsearch的默认德语分析器。 创建使用ElasticsearchCRUD的索引,它使用德语分析器对搜索和索引进行映射。

可以通过在ElasticsearchString属性中定义Analyzer属性来使用德语分析器。 此属性为搜索和索引添加分析器。 该属性可以使用任何字符串,因此也可以定义自定义分析器。 Fields属性也被设置。 这被使用,以便原始字符串也可以用于搜索。 Fields属性使用Type,该类可以定义该字段的子映射。

public class GermanData
{
    public long Id { get; set; }

    public string Name { get; set; }

    public string FamilyName { get; set; }

    [ElasticsearchString(Fields = typeof(FieldDataDefinition), Analyzer=LanguageAnalyzers.German)]
    public string Info { get; set; }
}

public class FieldDataDefinition
{
    [ElasticsearchString(Index=StringIndex.not_analyzed)]
    public string Raw { get; set; } 
}

然后使用映射创建索引:

_context.IndexCreate<GermanData>(indexDefinition);

现在可以将一些数据添加到索引中。

public void CreateSomeMembers()
{
    var jm = new GermanData {Id = 1, FamilyName = "Moore", Info = "Muenich", Name = "John"};
    _context.AddUpdateDocument(jm, jm.Id);
    var jj = new GermanData { Id = 2, FamilyName = "Jones", Info = "Münich", Name = "Johny" };
    _context.AddUpdateDocument(jj, jj.Id);
    var pm = new GermanData { Id = 3, FamilyName = "Murphy", Info = "Munich", Name = "Paul" };
    _context.AddUpdateDocument(pm, pm.Id);
    var sm = new GermanData { Id = 4, FamilyName = "McGurk", Info = "munich", Name = "Séan" };
    _context.AddUpdateDocument(sm, sm.Id);
    var sob = new GermanData { Id = 5, FamilyName = "O'Brien", Info = "Not a much use, bit of a problem", Name = "Sean" };
    _context.AddUpdateDocument(sob, sob.Id);
    var tmc = new GermanData { Id = 6, FamilyName = "McCauley", Info = "Couldn't a ask for anyone better", Name = "Tadhg" };
    _context.AddUpdateDocument(tmc, tmc.Id);

    _context.SaveChanges();
}

如果将查询搜索发送到此索引和类型,则使用德语分析器中的词条,并找到所有不同的Munich 类型。 Munich, Münich, Muenichmunich都被索引,这些被保存为munich词条。

这可以检查如下:

http://localhost:9200/germandatas/_analyze?&analyzer=german&text=Muenich munich Münich Munich

查询搜索发送如下:

POST http://localhost:9200/germandatas/germandata/_search HTTP/1.1
Content-Type: application/json
Host: localhost:9200
Content-Length: 46
Expect: 100-continue

{ "query": { "match": {"info": "Muenich"} }  }

搜索返回4个不同的结果,这与我们添加的数据相匹配。 这就是我们的期望:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 703

{
   "took":1,"timed_out":false,"_shards":{
      "total":5,"successful":5,"failed":0},"hits":{
        "total":4,"max_score":1.0,"hits":[
              {"_index":"germandatas","_type":"germandata","_id":"1","_score":1.0,"_source":{"id":1,"name":"John","familyname":"Moore","info":"Muenich"}},
              {"_index":"germandatas","_type":"germandata","_id":"4","_score":0.30685282,"_source":{"id":4,"name":"Séan","familyname":"McGurk","info":"munich"}},
              {"_index":"germandatas","_type":"germandata","_id":"2","_score":0.30685282,"_source":{"id":2,"name":"Johny","familyname":"Jones","info":"Münich"}},
              {"_index":"germandatas","_type":"germandata","_id":"3","_score":0.30685282,"_source":{"id":3,"name":"Paul","familyname":"Murphy","info":"Munich"}}
         ]
        }
}

使用ElasticsearchCRUD在Elasticsearch中使用内置语言分析器非常简单。 存在不同的博客,解释如何使用不同配置的不同German分析仪。 这些也可以在ElasticsearchCRUD中配置为自定义分析器。 我没有对所有不同分析仪进行系统比较,以说哪一种更适合用于不同类型的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值