2014-02-11 31 views
1

如果将字段设置为FieldIndexing.Analyzed,则RavenDB默认使用LowerCaseKeywordAnalyzer,如果将字段设置为FieldIndexing.Analyzed,则开关(如果我没有弄错的话)使用StandardAnalyzer如何更改动态字段的默认分析仪

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

我该怎么做? 做我使用插件和实现AbstractAnalyzerGenerator? 我不希望这样做,因为这会使部署变得更加复杂,只需更改默认分析器即可。

回答

0

您可以使用此:

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

你能解释一下这里发生了什么吗? – digitalextremist

+0

我试过这个,但它仍然使用LowerCaseKeywordAnalyzer。 (或者至少当我用Luke检查Lucene索引时,字段值没有被标记) – ldx

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"); 
     } 
    } 
相关问题