Package com.orchestranetworks.module

# Interface ModuleSearchRegistrationContext

public interface ModuleSearchRegistrationContext
Context for registering custom search resources in EBX®.

Since:
  6.0.0
See Also:
  - `ModuleRegistration.handleSearchRegistration(ModuleSearchRegistrationContext)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getModuleName()`
  Returns the current module name.
  `ModuleSearchRegistrationContext`
  `registerSearchTemplate(Supplier<SearchTemplate> aSearchTemplate)`
  Registers a new search template supplier.
  `ModuleSearchRegistrationContext`
  `registerStopWords(StopWordsDeclaration aDeclaration, List<String> stopWords)`
  Registers a new list of stop words under a given declaration.
  `ModuleSearchRegistrationContext`
  `registerSynonyms(SynonymDeclaration aDeclaration, List<SynonymPair> someSynonyms)`
  Registers a new list of synonyms under a given declaration.

- ## Method Details

  - ### getModuleName

    String getModuleName()
    Returns the current module name.

  - ### registerSearchTemplate

    ModuleSearchRegistrationContext registerSearchTemplate(Supplier<SearchTemplate> aSearchTemplate)
    Registers a new search template supplier.

    Configure the template in the `Search` extension in the DMA.

    Throws:
      `IllegalArgumentException` - if:
      - The specified search template declaration is `null`.
      - The specified search template declaration specifies a key that belongs to another module.
      - The specified search template declaration does not specify a `template` .
    See Also:
      - `SearchTemplate`

  - ### registerStopWords

    ModuleSearchRegistrationContext registerStopWords(StopWordsDeclaration aDeclaration, List<String> stopWords)
    Registers a new list of stop words under a given declaration.

    A field-level search strategy like 'Name' or 'Text' can be parameterized with a stop word list. All the words in the list are then ignored when searching. Tuning a search strategy with the appropriate stop words helps with performance and relevancy of the search.

    ### Usage

    Use the key in the declaration when configuring a custom field-level search strategy in the `Search` extension of the data model assistant. Then select a compatible field, and assign the new search strategy in the 'Extensions' tab.

    ### Code sample

    In the implementation of `ModuleRegistration.handleSearchRegistration(ModuleSearchRegistrationContext)`:

         StopWordsDeclaration decl = StopWordsDeclaration.of(
                StopWordsKey.parse("myModuleName@stopWordsList"),
                UserMessage.createInfo("a label"),
                UserMessage.createInfo("a description"));
         aContext.registerStopWords(addressStopWordsDeclaration, Arrays.asList("sw1", "sw2"));

    Throws:
      `IllegalArgumentException` - if:
      - The specified stop word declaration is `null`.
      - The specified stop word declaration specifies a key that does not belong to any module.
      - The specified stop word declaration specifies a key that belongs to another module.

  - ### registerSynonyms

    ModuleSearchRegistrationContext registerSynonyms(SynonymDeclaration aDeclaration, List<SynonymPair> someSynonyms)
    Registers a new list of synonyms under a given declaration.

    A field-level search strategy like 'Name' or 'Text' can be parameterized with a synonyms list. Each pair of words in the list are then considered the same when searching.

    ### Usage

    Use the key in the declaration when configuring a custom field-level search strategy in the `Search` extension of the data model assistant. Then select a compatible field, and assign the new search strategy in the 'Extensions' tab.

    ### Code sample

    The following sample declares 'Michael', 'Mike' and 'Mickael' as synonyms. Note that choosing the same word in the 'output' parameter of the `SynonymPair` allows 'Michael' to be considered as the synonym of 'Mickael' by transitivity. In the implementation of `ModuleRegistration.handleSearchRegistration(ModuleSearchRegistrationContext)`:

         SynonymDeclaration decl = SynonymDeclaration.of(SynonymsKey.parse("myModuleName@synonymsList"),
                UserMessage.createInfo("a label"),
                UserMessage.createInfo("a description"));
         List someSynonyms = Arrays.asList(
                SynonymPair.newPair("Michael", "Mike"),
                SynonymPair.newPair("Mickael", "Mike"));
         aContext.registerSynonyms(decl, someSynonyms);

    Throws:
      `IllegalArgumentException` - if:
      - The specified synonym declaration is `null`.
      - The specified synonym declaration specifies a key that does not belong to any module.
      - The specified synonym declaration specifies a key that belongs to another module.