Class KendraSearchProvider

  • All Implemented Interfaces:
    WikiProvider, SearchProvider

    public class KendraSearchProvider
    extends java.lang.Object
    implements SearchProvider
    Search provider that implements {link SearchProvider} using AWS Kendra for indexing. Note that we are using a Custom DataSource which limits the attributes that can be uploaded / searched for each page (as per https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html). This could be overcome by using an S3 bucket where any custom attributes can be added.
    Since:
    2.11.0
    • Method Detail

      • initialize

        public void initialize​(Engine engine,
                               java.util.Properties properties)
                        throws NoRequiredPropertyException,
                               java.io.IOException
        Initializes the page provider.
        Specified by:
        initialize in interface WikiProvider
        Parameters:
        engine - Engine to own this provider
        properties - A set of properties used to initialize this provider
        Throws:
        NoRequiredPropertyException - If the provider needs a property which is not found in the property set
        java.io.IOException - If there is an IO problem
      • getProviderInfo

        public java.lang.String getProviderInfo()
        Return a valid HTML string for information. May be anything.
        Specified by:
        getProviderInfo in interface WikiProvider
        Returns:
        A string describing the provider.
      • pageRemoved

        public void pageRemoved​(Page page)
        Delete a page from the search index.
        Specified by:
        pageRemoved in interface SearchProvider
        Parameters:
        page - Page to remove from search index.
      • reindexPage

        public void reindexPage​(Page page)
        Adds a WikiPage for indexing queue. This is called a queue, since this method is expected to return pretty quickly, and indexing to be done in a separate thread.
        Specified by:
        reindexPage in interface SearchProvider
        Parameters:
        page - The WikiPage to be indexed.
      • findPages

        public java.util.Collection<SearchResultfindPages​(java.lang.String query,
                                                            Context wikiContext)
                                                     throws ProviderException,
                                                            java.io.IOException
        Search for pages matching a search query.
        Specified by:
        findPages in interface SearchProvider
        Parameters:
        query - query to search for
        wikiContext - the context within which to run the search
        Returns:
        collection of pages that match query
        Throws:
        ProviderException - if the search provider failed.
        java.io.IOException - if for some reason the query could not be executed.
      • initializeIndexAndDataSource

        public void initializeIndexAndDataSource()
        This method initialize the AWS Kendra Index and Datasources to be used.
      • getKendra

        public com.amazonaws.services.kendra.AWSkendra getKendra()
      • setKendra

        public void setKendra​(com.amazonaws.services.kendra.AWSkendra kendra)
      • buildClient

        protected com.amazonaws.services.kendra.AWSkendra buildClient()