当我使用facets创建搜索时,我希望facet的结果是整个短语,而不是单个单词。我希望它不是大小写敏感的--就像'not_analyzed‘一样。
例如,如果我有一个音乐json对象,并希望根据流派来组织facet结果,我希望看到每个流派作为整个流派术语(节奏和蓝调),而不是一个方面的“节奏”和一个“布鲁斯”,我希望能够搜索“节奏和蓝调”,并让它匹配“节奏和蓝调”(注意大小写)。
似乎elasticsearch文档建议使用标记器和小写筛选器的自定义分析器。
下面是我提到的来自elasticsearch的建议:(页面中间) http://www.elasticsearch.org/blog/starts-with-phrase-matching/
我希望能够这样说(在我的POCO中用伪代码):
[ElasticProperty(Analyzer = "tokenizer, lowercase"]
public string Genre { get; set; }
发布于 2014-05-09 06:47:48
在映射中使用multi field类型。这样做将允许您以两种方式索引流派字段-用于执行搜索的分析(使用标准或小写分析器)和用于分面的not_analyzed。
对于更高级的映射,NEST中基于属性的映射并不能解决这个问题。您必须使用fluent API,例如:
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)))))));
希望这能有所帮助!
https://stackoverflow.com/questions/23552369
复制相似问题