Interface ISearch

All Known Subinterfaces:
SearchWithToken
All Known Implementing Classes:
AbstractSearch, ChangesSearch, ContentSearch, DecoratedSearchManager.DecoratedSearch, DefaultSearch, DefaultSearchWithToken

public interface ISearch
A representation of a search to be performed. Searches are immutable, and consist of these parts:
  1. The SearchIndex(s) to perform the search on.
  2. The SearchQuery to be performed.
  3. The SearchSort describing the order to apply to the results.
  4. The zero-based startOffset of the results of the search.
  5. The limit or maximum number of results to return.
  6. isExplain indicating whether or not to provide explanation for the query.
  7. The HighlightParams describing how to highlight the search.
WARNING: SearchIndex(s), startOffset, limit, and isExplain must be provided. The rest can be null, or empty (if a Collection) or not present (if an Optional).

Implementations of this interface will provide fields which are relied upon by Confluence's V2 search API.

It is recommended to extend AbstractSearch when providing a concrete implementation of this interface.

See Also:
  • Field Details

  • Method Details

    • getQuery

      @NonNull SearchQuery getQuery()
      Returns:
      the non-null query component of the search
    • getSort

      SearchSort getSort()
      Returns:
      the sort component of the search
    • getStartOffset

      int getStartOffset()
      Returns:
      the start offset (0 based).
    • getLimit

      int getLimit()
      Returns:
      the maximum page size (positive).
    • getSearchType

      default String getSearchType()
      Returns type of search e.g. SiteSearch, RecentUpdate, NetworkFeed, BlogUpdate, which can be used by search manager to switch between different implementations to support incremental roll out.
      Returns:
      type of search
    • getHighlight

      default Optional<HightlightParams> getHighlight()
      Provides indication as well as pre/post tag whether query terms should be highlighted in title and body of a search result. See SearchResult.getDisplayTitleWithHighlights() and SearchResult.getResultExcerptWithHighlights().
    • isExplain

      default boolean isExplain()
    • generatesToken

      default boolean generatesToken()
      Specifies whether the resulting SearchResults.getNextPageSearch() will be generated with a token. A search token allows additional searching to be performed against a specific version of the index.

      Note: for backward compatibility reason, this value only applies to OpenSearch where it's especially costly to generate a token for every search request. On Lucene, this value is currently ignored, i.e. it will continue to generate a token for every search request. This may change in the future, so if you require a token, you should make this return true.

      Returns:
      true if SearchResults.getNextPageSearch() should be generated with a token
      Since:
      9.0
    • getSearchIndexes

      default EnumSet<SearchIndex> getSearchIndexes()
      IMPORTANT: Use the new getIndices method instead. Specifies which indexes should be targeted for this particular search.
    • getIndices

      default List<Index> getIndices()
      Returns:
      a list of indexes should be targeted
      Since:
      8.7.0
    • withIndices

      @Deprecated(forRemoval=true) default ISearch withIndices(List<Index> indices)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 9.0. Use toBuilder()
      Parameters:
      indices - the indices to search from
      Returns:
      a new ISearch containing the new indices
      Since:
      8.7.0
    • withQuery

      @Deprecated(forRemoval=true) default ISearch withQuery(SearchQuery query)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 9.0. Use toBuilder()
      Parameters:
      query - the query to be added to the search object
      Returns:
      a new ISearch containing the new query
      Throws:
      UnsupportedOperationException - if the class does not implement this method
      Since:
      8.7.0
    • withLimit

      @Deprecated(forRemoval=true) default ISearch withLimit(int limit)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 9.0. Use toBuilder()
      Parameters:
      limit - the limit parameter
      Returns:
      a new ISearch containing the limit parameter
      Since:
      8.9
    • toBuilder

      ISearch.Builder<? extends ISearch> toBuilder()
      Returns:
      a builder that's initialised with the values of the current search object
      Since:
      9.0