Skip to content

Latest commit

 

History

History
170 lines (133 loc) · 9.07 KB

search-query-builder.service.md

File metadata and controls

170 lines (133 loc) · 9.07 KB
Title Added Status Last reviewed
Search Query Builder service
v2.3.0
Active
2019-03-19

Stores information from all the custom search and faceted search widgets, compiles and runs the final search query.

Class members

Methods

  • addFilterQuery(query: string)
    Adds a filter query to the current query.

    • query: string - Query string to add
  • addUserFacetBucket(field: FacetField, bucket: FacetFieldBucket)
    Adds a facet bucket to a field.

  • buildQuery(): SearchRequest
    Builds the current query.

    • Returns SearchRequest - The finished query
  • encodeQuery()
    Encodes query shards stored in filterRawParams property.

  • execute(queryBody?: SearchRequest)
    Builds and executes the current query.

    • queryBody: SearchRequest - (Optional)
  • getDefaultConfiguration(): SearchConfiguration|undefined

  • getFacetField(label: string): FacetField
    Gets a facet field by label.

    • label: string - Label of the facet field
    • Returns FacetField - Facet field data
  • getFacetQuery(label: string): FacetQuery
    Gets a facet query by label.

    • label: string - Label of the query
    • Returns FacetQuery - Facet query data
  • getPrimarySorting(): SearchSortingDefinition
    Gets the primary sorting definition.

  • getQueryGroup(query: any): any
    Gets the query group.

    • query: any - Target query
    • Returns any - Query group
  • getScope(): RequestScope

    • Returns RequestScope -
  • getSearchFormDetails(): SearchForm[]

  • getSortingOptions(): SearchSortingDefinition[]
    Gets all pre-configured sorting options that users can choose from.

  • getSupportedLabel(configLabel: string): string
    Encloses a label name with double quotes if it contains whitespace characters.

    • configLabel: string - Original label text
    • Returns string - Label, possibly with quotes if it contains spaces
  • getUserFacetBuckets(field: string): FacetFieldBucket[]
    Gets the buckets currently added to a field

  • isFilterServiceActive(): boolean

    • Returns boolean -
  • loadConfiguration(): SearchConfiguration

  • navigateToSearch(query: string, searchUrl: string)
    Updates user query, executes existing search configuration, encodes the query and navigates to searchUrl.

    • query: string - The query to use as user query
    • searchUrl: string - Search url to navigate to
  • removeFilterQuery(query: string)
    Removes an existing filter query.

    • query: string - The query to remove
  • removeUserFacetBucket(field: FacetField, bucket: FacetFieldBucket)
    Removes an existing bucket from a field.

  • resetToDefaults()

  • search(queryBody: SearchRequest): Observable<ResultSetPaging>

  • setScope(scope: RequestScope)

    • scope: RequestScope -
  • update(queryBody?: SearchRequest)
    Builds the current query and triggers the updated event.

    • queryBody: SearchRequest - (Optional)
  • updateSearchQueryParams()
    Encodes the query and navigates to existing search route adding encoded query as a search param.

  • updateSelectedConfiguration(index: number)

    • index: number -

Details

See the Search filter component page for full details about the format of queries, facet fields, and sorting options.

The Query Builder is UI agnostic and does not rely on Angular components. You can reuse it with multiple component implementations.

You can use custom widgets to populate and edit the following parts of the resulting query:

  • categories
  • query fragments that form a query expression
  • include fields
  • scope settings
  • filter queries
  • facet fields
  • range queries
constructor(queryBuilder: SearchQueryBuilderService) {

    queryBuilder.updated.subscribe(query => {
        this.queryBuilder.execute();
    });

    queryBuilder.executed.subscribe(data => {
        this.onDataLoaded(data);
    });

}

Note: From ADF 3.0.0, the query contains the "facetFormat": "V2" parameter so that all the responses have the same structure whether they come from search queries containing facetFields, facetQueries, grouped facetQueries or facetIntervals.

Runtime Configuration

You can provide search configuration at runtime using the ADF_SEARCH_CONFIGURATION injection token. The value should expose the SearchConfiguration interface.

@NgModule({
    providers: [
        { provide: ADF_SEARCH_CONFIGURATION, useValue: {/*...*/} }
    ]
})
class AppModule {}

See also