Dynamic field behaviour
Feature
Use dynamic fields controlled by you in code
Useful when use a unified collection and isolate your tenant by a prefix/suffix in each field
How to
-
You need prepare your SOLR collection with dynamic fields, to do this, follow steps in SOLR wiki
-
Choose one or more approachs:
2.1. Using global settings (see to more informations), than all searchs will use prefix and/or suffix setted in global settings (useful when you know your tenant in app startup)
2.1.1. Set global settings
csharp services .AddSolrExpress<TechProduct>(builder => builder .UseOptions(options => { // ... Other settings options.GlobalDynamicFieldPrefix = "my_prefix_", options.GlobalDynamicFieldSuffix = "_my_suffix" }) // ... Other settings );
2.1.2. Optionally, set global settings for specific field
```csharp using SolrExpress.Search.Behaviour.Extension;
services.AddSolrExpress<TechProduct>(q => q .ChangeDynamicFieldBehaviour(q => q.Manufacturer, prefixName: "my_prefix_", suffixName: "_my_suffix") // ... Other settings );
```
2.1.3. Change your class that represent your collection, extend Document (see to more informations), set dynamic field in SolrFieldAttribute, like below:
csharp public class MyDocument : Document { [SolrField("myfield_s", IsDynamicField = true)] public string MyField { get; set; } }
2.2. Using settings to each search, than only this search will use prefix and/or suffix (useful when you know your tenant only in after some process)
2.2.1. Set settings in your search
```csharp using SolrExpress.Search.Behaviour.Extension;
DocumentSearch<TechProduct> documentSearch; // From your DI provider documentSearch .ChangeDynamicFieldBehaviour(q => q.Manufacturer, prefixName: "my_prefix_", suffixName: "_my_suffix") // ... Other settings .Execute();
``` 2.2.2. Change your class that represent your collection, extend Document (see to more informations), set dynamic field in SolrFieldAttribute, like below:
csharp public class MyDocument : Document { [SolrField("myfield_s", IsDynamicField = true)] public string MyField { get; set; } }
2.3. Using settings to each field, than all searchs will use prefix and/or suffix setted in field settings (useful when you know your tenant in hard code)
2.3.1. Change your class that represent your collection, extend Document (see to more informations), set settings in SolrFieldAttribute, like below:
csharp public class MyDocument : Document { [SolrField("myfield_s", IsDynamicField = true, DynamicFieldPrefixName = "my_prefix_", DynamicFieldSuffixName = "_my_suffix")] public string MyField { get; set; } }
NOTE
See another example in issue 206;