Class QueryResultImpl

    • Field Detail

      • index

        protected final SearchIndex index
        The search index to execute the query.
      • sessionContext

        protected final SessionContext sessionContext
        Component context of the current session
      • queryImpl

        protected final AbstractQueryImpl queryImpl
        The query instance which created this query result.
      • spellSuggestion

        protected final org.apache.jackrabbit.core.query.lucene.SpellSuggestion spellSuggestion
        The spell suggestion or null if not available.
      • docOrder

        protected final boolean docOrder
        If true nodes are returned in document order.
    • Constructor Detail

      • QueryResultImpl

        public QueryResultImpl​(SearchIndex index,
                               SessionContext sessionContext,
                               AbstractQueryImpl queryImpl,
                               org.apache.jackrabbit.core.query.lucene.SpellSuggestion spellSuggestion,
                               ColumnImpl[] columns,
                               boolean documentOrder,
                               long offset,
                               long limit)
                        throws RepositoryException
        Creates a new query result. The concrete sub class is responsible for calling getResults(long) after this constructor had been called.
        Parameters:
        index - the search index where the query is executed.
        sessionContext - component context of the current session
        queryImpl - the query instance which created this query result.
        spellSuggestion - the spell suggestion or null if none is available.
        columns - the select properties of the query.
        documentOrder - if true the result is returned in document order.
        limit - the maximum result size
        offset - the offset in the total result set
        Throws:
        RepositoryException - if an error occurs while reading from the repository.
        IllegalArgumentException - if any of the columns does not have a column name.
    • Method Detail

      • executeQuery

        protected abstract MultiColumnQueryHits executeQuery​(long resultFetchHint)
                                                      throws IOException
        Executes the query for this result and returns hits. The caller must close the query hits when he is done using it.
        Parameters:
        resultFetchHint - a hint on how many results should be fetched.
        Returns:
        hits for this query result.
        Throws:
        IOException - if an error occurs while executing the query.
      • createExcerptProvider

        protected abstract ExcerptProvider createExcerptProvider()
                                                          throws IOException
        Creates an excerpt provider for this result set.
        Returns:
        an excerpt provider.
        Throws:
        IOException - if an error occurs.
      • getResults

        protected void getResults​(long size)
                           throws RepositoryException
        Attempts to get size results and puts them into resultNodes. If the size of resultNodes is less than size then there are no more than resultNodes.size() results for this query.
        Parameters:
        size - the number of results to fetch for the query.
        Throws:
        RepositoryException - if an error occurs while executing the query.
      • isAccessGranted

        protected boolean isAccessGranted​(ScoreNode[] nodes)
                                   throws RepositoryException
        Checks if access is granted to all nodes.
        Parameters:
        nodes - the nodes to check.
        Returns:
        true if read access is granted to all nodes.
        Throws:
        RepositoryException - if an error occurs while checking access rights.
      • getTotalSize

        public int getTotalSize()
        Returns the total number of hits. This is the number of results you will get get if you don't set any limit or offset. This method may return -1 if the total size is unknown.

        If the "sizeEstimate" options is enabled: Keep in mind that this number may get smaller if nodes are found in the result set which the current session has no permission to access. This might be a security problem.

        Specified by:
        getTotalSize in interface JackrabbitQueryResult
        Returns:
        the total number of hits.