当我使用facet创建搜索时,我希望facet结果在整个短语上,而不是单个单词。我希望它不要区分大小写 - 因为' not_analyzed'会做的。
例如,如果我有一个音乐json对象并且想要根据类型组织构面结果,我希望将每个类型视为整个类型术语(节奏和蓝调),而不是一个方面的节奏和'节奏& #39;还有一个用于布鲁斯',我希望能够搜索节奏和布鲁斯'并让它与Rhythm和Blues'相匹配(通知案例)。
似乎elasticsearch文档建议使用标记器和小写过滤器的自定义分析器。
这里是我提到的elasticsearch的建议:(中页) http://www.elasticsearch.org/blog/starts-with-phrase-matching/
我希望能够说出(在伪代码中的POCO中):
[ElasticProperty(Analyzer = "tokenizer, lowercase"]
public string Genre { get; set; }
答案 0 :(得分:1)
在映射中使用multi field类型。这样做将允许您以两种方式索引流派字段 - 分析(使用标准或小写分析器)进行搜索,而不是分析分面。
对于像这样的更高级的映射,NEST中基于属性的映射不会削减它。您必须使用流畅的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)))))));
希望这有帮助!