如何更改动态字段的默认分析器

时间:2014-02-11 15:51:11

标签: ravendb

如果您将字段设置为LowerCaseKeywordAnalyzer,RavenDB默认使用StandardAnalyzer并切换{如果我没记错的话)FieldIndexing.Analyzed

对于动态字段,RavenDB也默认为LowerCaseKeywordAnalyzer。 我想改变这个。我希望RavenDB使用StandardAnalyzer ALL 我的动态字段。

我该怎么做? 我 来使用插件并实施AbstractAnalyzerGenerator吗? 我不愿意这样做,因为这会使部署变得更复杂,就像更改默认分析器一样简单。

2 个答案:

答案 0 :(得分:1)

我用下一个代码解决了这个问题。

public class Product_ByFields : AbstractIndexCreationTask<Product>
    {
        public Product_ByFields()
        {
            Map = products => from product in products
                              select new
                              {
                                     _ = product.FieldValues.Select(f => CreateField(f.Key, f.Value.SearchTerms, false, true))
                              };

            this.Analyze("__all_fields", "Lucene.Net.Analysis.Standard.StandardAnalyzer");
        }
    }

答案 1 :(得分:0)

您可以使用:

 _= CreateField("Foo", "bar", stored: false, analyzed: true);