首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Nest for Elasticsearch中添加完整的短语标记器?

如何在Nest for Elasticsearch中添加完整的短语标记器?
EN

Stack Overflow用户
提问于 2014-05-09 04:55:57
回答 1查看 3.5K关注 0票数 4

当我使用facets创建搜索时,我希望facet的结果是整个短语,而不是单个单词。我希望它不是大小写敏感的--就像'not_analyzed‘一样。

例如,如果我有一个音乐json对象,并希望根据流派来组织facet结果,我希望看到每个流派作为整个流派术语(节奏和蓝调),而不是一个方面的“节奏”和一个“布鲁斯”,我希望能够搜索“节奏和蓝调”,并让它匹配“节奏和蓝调”(注意大小写)。

似乎elasticsearch文档建议使用标记器和小写筛选器的自定义分析器。

下面是我提到的来自elasticsearch的建议:(页面中间) http://www.elasticsearch.org/blog/starts-with-phrase-matching/

我希望能够这样说(在我的POCO中用伪代码):

代码语言:javascript
复制
[ElasticProperty(Analyzer = "tokenizer, lowercase"]
public string Genre { get; set; }
EN

回答 1

Stack Overflow用户

发布于 2014-05-09 06:47:48

在映射中使用multi field类型。这样做将允许您以两种方式索引流派字段-用于执行搜索的分析(使用标准或小写分析器)和用于分面的not_analyzed。

对于更高级的映射,NEST中基于属性的映射并不能解决这个问题。您必须使用fluent API,例如:

代码语言:javascript
复制
client.CreatIndex("songs", c => c
.AddMapping<Song>(m => m
    .MapFromAttributes()
    .Properties(props => props
        .MultiField(mf => mf
            .Name(s => s.Genre)
            .Fields(f => f
                .String(s => s.Name(o => o.Genre).Analyzer("standard"))
                .String(s => s.Name(o => o.Genre.Suffix("raw")).Index(FieldIndexOption.not_analyzed)))))));

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23552369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档