solr express
1.0.0
Search
K

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

  1. 1.
    You need prepare your SOLR collection with dynamic fields, to do this, follow steps in SOLR wiki
  2. 2.
    Choose one or more approachs:
    2.1. Using global settings (see </tutorials/global-settings> 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
    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
    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 </tutorials/getting-started> to more informations), set dynamic field in SolrFieldAttribute, like below:
    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
    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 </tutorials/getting-started> to more informations), set dynamic field in SolrFieldAttribute, like below:
    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 </tutorials/getting-started> to more informations), set settings in SolrFieldAttribute, like below:
    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;