solr express
5.0.0
5.0.0
  • Introduction
  • About SOLR Express
    • Release notes
    • About
      • License
      • Packages
    • Benchmarks
      • Version 3.1.2
      • Version 5.0.0
    • Breaking changes
      • Version 5.0.0
  • Tutorials
    • Getting started
    • Basic Features
      • Queries
      • Fail fast
      • Global settings
      • Local parameter
    • Facets
      • Facet field
      • Facet query
      • Facet range
      • Facet spatial
      • Nested facet
    • Advanced Features
      • Authentication and Authorization
      • Dynamic field behaviour
      • Result interceptors
Powered by GitBook
On this page
  • Feature
  • How to

Was this helpful?

  1. Tutorials
  2. Advanced Features

Dynamic field behaviour

PreviousAuthentication and AuthorizationNextResult interceptors

Last updated 6 years ago

Was this helpful?

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. You need prepare your SOLR collection with dynamic fields, to do this, follow steps in

  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 ;

SOLR wiki
206