Assembly: Search
Purpose
Classes in assembly Smartsite.EnterpriseSearch.Search can be used to implement a search application in a .net environment. The assembly is available for .net 4.8 and .net 6.0.
Search classes
Query classes
Query classes are used to specify a search query. Use objects, methods and properties as usual for .net. Each class can produce .json corresponding to the query, which is used to build the .json for a complete query. The complete query is sent to Elastic Search in order to perform an actual search.
Classes for the query components of a complete query mimic as much as possible query components as used by Elastic Search.
For a search application there is no need to use query components to build-up a complete query; this is done by class SearchQuery, see below. Query component classes are a preparation for searches that require full control over the search approach.
Name | Purpose |
---|---|
BaseQuery | Abstract base class for parts of the search query. |
BoolQuery | Boolean compound query. It contains a set of must-queries, a set of should-queries, and a set of must-not-queries. |
FunctionScoreQuery | Query containing a scoring function and containing an actual query. The function is applied to the score of documents found by the actual query. |
MultiMatchQuery | Query that uses the search words for a search in multiple fields of a document, for example to search "test" in fields doc_title and doc_body. |
NestedQuery | Query to wrap a query, in order to apply the query to nested documents. The nested query has no 1:1 counterpart in Elastic Search. It is an Enterprise Search implementation to search documents in a mini hierarchy of documents, and to find the root document of the hierarchy. |
RangeQuery | Query for a range of values in a field. The general range query is currently not supported. Instead the class implements the specialized date range query, applied to a document field such as doc_created. |
TermQuery | Query that uses a term to filter, given a field of a document, for example to filter on a keyword given field doc_keywords. |
TermsQuery | Query that uses multiple terms to filter, given a field of a document, for example to filter on keywords given field doc_keywords. The filter matches if one or more terms match. |
Enumerations supporting the query classes:
Name | Purpose |
---|---|
BoolQueryOccurrenceType | Enumeration of the above boolean query occurrence types: Must, Should and MustNot. |
MultiMatchQueryType | Enumeration of the multi-match query types: BestFields for a regular search, Phrase to match an entire field, PhrasePrefix to match a prefix in the field, PhraseSuffix to match a suffix in the field. PhraseSuffix has no 1:1 counterpart in Elastic Search. It is an Enterprise Search implementation that uses a PhrasePrefix, applied to the reverse of words. |
Classes and an enumeration supporting the FunctionScoreQuery:
Name | Purpose |
---|---|
BaseScoringFunction | Abstract base class for scoring functions. |
DecayScoringFunction | Scoring function providing a decay, to reduce the score of documents at a greater distance from an origin. |
DecayType | Type for the decay scoring function: Exponential, Gauss or Linear. |
Aggregation classes
Aggregation specifications can be added to the search specification:
- in order to request aggregation counts, in addition to the search result itself,
- and optionally in order to request to filter the search result given aggregation values.
The search application uses aggregations to implement facets and facetted search.
Name | Purpose |
---|---|
SearchQueryBaseAggregation | Abstract base class for search query aggregations. |
SearchQueryDateRangeAggregation | Aggregation resulting in one bucket per specified date range. This is applied to field doc_created by default. |
SearchQueryTermsAggregation | Aggregation resulting in one bucket per unique term, limited to the number of buckets. |
Support for the aggregation classes:
Name | Type | Purpose |
---|---|---|
SearchQueryAggregationType | enum | Enumeration of aggregation types: Terms, Cardinality or DateRange. This enumeration will be revoked, differentiating between types by means of class types such as SearchQueryTermsAggregation and SearchQueryDateRangeAggregation. |
SearchQueryDateRange | class | One date range for use by class SearchQueryDateRangeAggregation. Includes a from-date specification and/or to-date specification. Date specifications support date math as supported by Elastic Search. |
In addition to requesting aggregations it is possible to add filter values to the aggregation, requesting to keep the search results that match the filter values.
Name | Purpose |
---|---|
BaseFilterValue | Abstract base class for a filter value. |
DateRangeFilterValue | Filter value containing a from-date specification and/or containing a to-date specification. This is applied to field doc_created by default. Multiple date range filter values are possible, handled as an OR. |
TermFilterValue | Filter value containing a term, or more generally a string. Multiple term filter values are possible, handles as an OR. |
Presentation classes
A few classes allow to control the presentation of the search result.
Name | Purpose |
---|---|
SortParameterEntry | Specification of one field for result ordering, and whether this should be ascending or descending. |
SortParameter | List of sort parameter entries. |
HighlightRequest | Specifies how to highlight found text in search result fragments. |
Searcher classes
The Searcher class performs an actual search. In order to perform the search it requires a search query and it requires the list of Elastic Search indexes to search.
Name | Type | Purpose |
---|---|---|
SearchField | class | Specification of one document field to search and, for example, which weight to apply. |
SearchFieldType | enum | Enumeration of search field types: FullText, ValueOfField or ValuesWithinField. This has no counterpart in Elastic Search. It is an Enterprise Search implementation to express the intent how the field should be used to search, and this steers how parts of the .json search query are built. |
SearchQuery | class | Builds and represents the complete search query. This includes the list of fields to search, aggregations, result ordering, result highlighting, paging and more. |
Searcher | class | Accepts the search query and performs the actual search by sending the .json search specification to Elastic Search. Captures the search result and returns this result to the search application. |
Result classes
Search result classes
Result classes are used to return the search result to the search application. Class Searcher captures the .json search result as returned by Elastic Search, and converts this to result class instances representing the search result.
Name | Type | Purpose |
---|---|---|
SearchResultEntry | class | Represents one hit in the search result. Contains the found document as an instance of class EsDocument. This class resides in assembly Smartsite.EnterpriseSearch.Base. |
SnippetBuilder | internal class | Builds a snippet, preferably using a highlighted fragment, else using a field of the found document. The result snippet is set in in the above SearchResultEntry. |
SearchResultAggregationEntry | class | This is one distinct aggregation value, with a count of the number of occurrences in the search result. |
SearchResultAggregation | class | This is a set of aggregation entries for one field / for one aggregation request. Multiple sets can be present in the search result. |
SearchResult | class | Search result as returned to the search application. It contains a list of search result entries, a list of search result aggregations and more, for example the current search result page. |
Xml result classes
Class SearchResult can return xml for the search result. This provides access from for example PHP environments that are remote and/or that cannot access .net assemblies.
Name | Type | Purpose |
---|---|---|
SearchResultXmlSettings | class | Settings for the xml to return, for example whether to include the document associated with each search result hit. |
Helper classes
Helper classes
Helper classes are not specifically search classes or result classes. Helper classes are included if used by the search or result classes, or if they could be useful for the search application.
Name | Type | Purpose |
---|---|---|
UrlBuilder | class | Abstract base class for url builder classes. |
DefaultUrlBuilder | class | Url builder that supports to read and modify a name-value collection that corresponds to the query arguments of the url. |