2014-02-11 58 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"); 
     } 
    } 
相關問題