Class AbstractSearchResult

java.lang.Object
com.atlassian.confluence.search.v2.AbstractSearchResult
All Implemented Interfaces:
BaseSearchResult, SearchResult
Direct Known Subclasses:
LuceneSearchResult, OpenSearchSearchResult

public abstract class AbstractSearchResult extends Object implements SearchResult
Abstract base implementation of SearchResult taken from LuceneSearchResult after removing dependency from Lucene classes
Since:
5.9
  • Constructor Details

    • AbstractSearchResult

      protected AbstractSearchResult()
    • AbstractSearchResult

      public AbstractSearchResult(Function<String,ConfluenceUser> userLookup)
  • Method Details

    • getLabels

      public Set<String> getLabels(com.atlassian.user.User user)
      Description copied from interface: SearchResult
      Gets the labels on the current search result that are visible to the specified user.
      Specified by:
      getLabels in interface SearchResult
      Parameters:
      user - filter labels by this user
      Returns:
      the labels on the current search result that are visible to the specified user.
    • getPersonalLabels

      public Set<String> getPersonalLabels()
      Description copied from interface: SearchResult
      Gets all the personal labels on the current search result.
      Specified by:
      getPersonalLabels in interface SearchResult
      Returns:
      all the personal labels on the current search result
    • getContent

      public String getContent()
      Description copied from interface: SearchResult
      Gets the text content of the search result.
      Specified by:
      getContent in interface SearchResult
      Returns:
      the text content of the search result
    • getSanitisedContent

      protected String getSanitisedContent()
    • getResultExcerpt

      protected String getResultExcerpt(int maxLength)
    • getResultExcerpt

      public String getResultExcerpt()
      Description copied from interface: SearchResult
      Gets excerpt from the context of the search result. Implementation could choose how to generate the result excerpts, for example, concatenated fragments of the document content where hits are found, or simply the first few words of the document.
      Specified by:
      getResultExcerpt in interface SearchResult
      Returns:
      excerpt of the content of the search result
    • getType

      public String getType()
      Description copied from interface: SearchResult
      Gets a string representation of the type of the entity represented by the search result. If the entity is a content object, this is the value of ContentEntityObject.getType()
      Specified by:
      getType in interface SearchResult
      Returns:
      the type of the entity represented as a string, or null if no such type can be determined
      See Also:
      • com.atlassian.confluence.core.Addressable#getType()
    • getStatus

      public String getStatus()
      Description copied from interface: SearchResult
      Gets a string representation of the entity status represented by the search result. If the entity is a content object, this is the value of ContentEntityObject.getContentStatus()
      Specified by:
      getStatus in interface SearchResult
      Returns:
      the status of the entity
    • isHomePage

      public boolean isHomePage()
      Description copied from interface: SearchResult
      Checks if the search result represents the homepage of a space.
      Specified by:
      isHomePage in interface SearchResult
      Returns:
      true if the result represents the homepage of a space
    • getCreationDate

      public Date getCreationDate()
      Specified by:
      getCreationDate in interface SearchResult
    • getCreator

      @Deprecated public String getCreator()
      Deprecated.
      Specified by:
      getCreator in interface SearchResult
    • getCreatorUser

      public ConfluenceUser getCreatorUser()
      Description copied from interface: SearchResult
      Gets the person who created the entity represented by the search result.
      Specified by:
      getCreatorUser in interface SearchResult
      Returns:
      the result's creator
    • getOwnerType

      public String getOwnerType()
      Description copied from interface: SearchResult
      If this result represents an attachment then this field will return the type of the container, a page or blogpost.
      Specified by:
      getOwnerType in interface SearchResult
      Returns:
      the owner type
    • getOwnerTitle

      public String getOwnerTitle()
      Description copied from interface: SearchResult
      If this result represents an attachment then this field will return the title of the page or blog post the attachment is attached to.
      Specified by:
      getOwnerTitle in interface SearchResult
      Returns:
      the owner title
    • getContentVersion

      public Integer getContentVersion()
      Description copied from interface: SearchResult
      Returns the version of the content if available, or null if there's no version for this result.
      Specified by:
      getContentVersion in interface SearchResult
    • getLastModificationDate

      public Date getLastModificationDate()
      Description copied from interface: SearchResult
      Gets the last modification date of the entity represented by the search result.
      Specified by:
      getLastModificationDate in interface SearchResult
      Returns:
      the last modification date of the entity
    • getLastModifier

      @Deprecated public String getLastModifier()
      Deprecated.
      Specified by:
      getLastModifier in interface SearchResult
    • getLastModifierUser

      public ConfluenceUser getLastModifierUser()
      Description copied from interface: SearchResult
      Gets the last person to modify the entity represented by the search result.
      Specified by:
      getLastModifierUser in interface SearchResult
      Returns:
      the result's last modifier
    • getDisplayTitle

      public String getDisplayTitle()
      Description copied from interface: SearchResult
      Gets the title of the search result appropriate for displaying to a user. All results should return something useful for this method.
      Specified by:
      getDisplayTitle in interface SearchResult
      Returns:
      the title of the search result appropriate for display on a page
      See Also:
    • getUrlPath

      public String getUrlPath()
      Description copied from interface: SearchResult
      Gets the URL path to the search result, relative to the site's context root. All results should return something useful for this method
      Specified by:
      getUrlPath in interface SearchResult
      Returns:
      the URL path to the search result
      See Also:
    • getLastUpdateDescription

      public String getLastUpdateDescription()
      Description copied from interface: SearchResult
      Gets some string describing the last modification to this content. May be null if no such string is available. For content objects, this will be the same as the "version comment"

      This string is user-supplied, and therefore not internationalised

      Specified by:
      getLastUpdateDescription in interface SearchResult
      Returns:
      a string describing the last modification to the content
      See Also:
    • getSpaceName

      public String getSpaceName()
      Specified by:
      getSpaceName in interface SearchResult
      Returns:
      the name of the space that contains this search result.
    • getSpaceKey

      public String getSpaceKey()
      Specified by:
      getSpaceKey in interface SearchResult
      Returns:
      the key of the space that contains this search result
    • hasLabels

      public boolean hasLabels()
      Specified by:
      hasLabels in interface SearchResult
      Returns:
      true if this search result has labels, false otherwise.
    • getExtraFields

      public Map<String,String> getExtraFields()
      Description copied from interface: SearchResult
      If the retrieved documents contain additional fields that cannot be directly accessed by this interface then they can be retrieved via this method.

      The field names are abstracted from the underlying search implementation and will be centrally defined. Their values are not yet documented.

      Specified by:
      getExtraFields in interface SearchResult
      Returns:
      Map of additional field names and their values.
    • getHandle

      public Handle getHandle()
      Description copied from interface: BaseSearchResult
      Retrieves the handle that can then be used by the AnyTypeDao to retrieve the database object referenced by this search result.

      Because the database and index are not updated at the same time, it is possible for a deleted entity to still be represented in the search index. Do not assume that this handle will always refer to a live object.

      Specified by:
      getHandle in interface BaseSearchResult
      Returns:
      the handle that can be used to look up the underlying database object.
      See Also:
    • getFieldNames

      public abstract Set<String> getFieldNames()
      Description copied from interface: BaseSearchResult
      Return names of all fields of a given document.
      Specified by:
      getFieldNames in interface BaseSearchResult
      Returns:
      names of all known fields or null
    • getField

      public String getField(String fieldName)
      Description copied from interface: BaseSearchResult
      Returns the contents of the field as a string. This method will return null if there is no content for the field or the field does not exist. FieldName is case sensitive.
      Specified by:
      getField in interface BaseSearchResult
      Returns:
      the field value or null.
    • getFieldValue

      public abstract String getFieldValue(String fieldName)
      Return a string value of a field of a given document, if the field has multiple values then return last value, if there is no such field then return null.
      Returns:
      a string value of a field
    • getFieldValues

      public abstract Set<String> getFieldValues(String fieldName)
      Return set of string values of a field of a given document, if the field has single value then return singleton set of that value, if there is no such field then return empty set.
      Specified by:
      getFieldValues in interface BaseSearchResult
      Returns:
      a string value of a field
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getStringResult

      protected String getStringResult(String... fieldNames)
      Retrieves the value for the specified field name. If more than one field name is provided, it will attempt to retrieve a value for each field in order, returning as soon as a non-null value is encountered.
      Parameters:
      fieldNames - field name(s) to retrieve a value for
      Returns:
      the first non-null value associated with the ordered list of field names passed in
    • getUserResult

      protected ConfluenceUser getUserResult(String fieldName)
      Attempts to resolve the contents of the given field as a ConfluenceUser. The method first attempts to resolve the user using the field value as a UserKey. If that fails, it tries to resolve the user using the field value as a username. If that fails, it returns null. This is necessary because the same SearchFieldMappings.LAST_MODIFIER and SearchFieldMappings.CREATOR fields are used both to store userkeys (post-upgrade) and usernames (pre-upgrade).
      Since:
      5.2
    • getDateResult

      protected Date getDateResult(String key)
    • getIntegerResult

      protected Integer getIntegerResult(String fieldName)