我无法使用Nest以编程方式在elasticsearch中的字段上设置相似性。
这是我如何设置索引的一个例子。 它在多场映射中,我想设置相似性,所以我可以尝试BM25相似性之类的东西......
(参见下面的道具>多字段部分)...
var createInd = client.CreateIndex("myindex", i => { i .Analysis(a => a.Analyzers(an => an .Add("nameAnalyzer", nameAnalyzer) ) .AddMapping<SearchData>(m => m .MapFromAttributes() .Properties(props => { props .MultiField(mf => mf //title .Name(s => s.Title) .Fields(f => f .String(s => s.Name(o => o.Title).Analyzer("nameAnalyzer")) .String(s => s.Name(o => o.Title.Suffix("raw")).Index(FieldIndexOption.not_analyzed)) ) ); ...i have not been able to 'programmatically' set the similarity on a field in elasticsearch using Nest.
here's an example of how i set up my index. it's within the multifield mapping where i'd like to set the similarity so i can experiment with things like BM25 similarity...
(see the props > multifield section below)...
var createInd = client.CreateIndex("myindex", i => { i .Analysis(a => a.Analyzers(an => an .Add("nameAnalyzer", nameAnalyzer) ) .AddMapping<SearchData>(m => m .MapFromAttributes() .Properties(props => { props .MultiField(mf => mf //title .Name(s => s.Title) .Fields(f => f .String(s => s.Name(o => o.Title).Analyzer("nameAnalyzer")) .String(s => s.Name(o => o.Title.Suffix("raw")).Index(FieldIndexOption.not_analyzed)) ) ); ...最满意答案
最近, 这个提交可以在字符串字段上设置相似性。 你现在可以这样做:
.String(s => s.Name(o => o.Title).Similarity("my_similarity")这是假设您已经将相似性添加到索引中。 NEST目前缺乏实际配置相似性的灵活性。 现在你必须使用CustomSimilaritySettings类。 例如:
var bm25 = new CustomSimilaritySettings("my_similarity", "BM25"); bm25.SimilarityParameters.Add("k1", "2.0"); bm25.SimilarityParameters.Add("b", "0.75"); var settings = new IndexSettings(); settings.Similarity = new SimilaritySettings(); settings.Similarity.CustomSimilarities.Add(bm25); client.CreateIndex("myindex", c => c.InitializeUsing(settings));在创建索引时能够通过流畅的API执行此操作会很高兴。 我正在考虑在1.0RC发布之前为此发送PR。
It was just recently made possible with this commit to set the similarity on a string field. You can now do this:
.String(s => s.Name(o => o.Title).Similarity("my_similarity")This is assumming you already have the similarity added to your index. NEST is lacking a bit of flexibility at the moment for actually configuring similarities. Right now you have to use the CustomSimilaritySettings class. For example:
var bm25 = new CustomSimilaritySettings("my_similarity", "BM25"); bm25.SimilarityParameters.Add("k1", "2.0"); bm25.SimilarityParameters.Add("b", "0.75"); var settings = new IndexSettings(); settings.Similarity = new SimilaritySettings(); settings.Similarity.CustomSimilarities.Add(bm25); client.CreateIndex("myindex", c => c.InitializeUsing(settings));It would be nice to be able to do this via the fluent API when creating an index. I am considering sending a PR for this before the 1.0RC release.
更多推荐
发布评论