This documentation outlines the process of replacing Sphinx search in a Plone site with Nuclia search. The goal is to explain the approach taken and provide instructions for replicating the process in another project.
To achieve the transition, the following steps were taken:
-
Generate Nuclia Sync Data:
- Iterate through
.mdfiles in the repository docs . - Calculate the hash of each file and store the mapping in
nuclia_sync.json.
- Iterate through
-
Extract Headings:
- Use regular expressions to extract headings from Markdown files.
- Store the extracted headings and slugs for document URLs.
-
Upload Documents:
- Utilize the
NucliaUploadclass from thenucliaSDK. - Generated slugs, Extracted headings, Nuclia
API_KEYand constructed URLs for.mdcan be passed in the class method.
- Utilize the
-
Synchronize Documents:
- Compare hashes to determine whether to upload, update, or delete documents, when changes are made.
- Handle document deletions using the
NucliaKBclass.
-
GitHub Actions Workflow:
- Created a synchronization workflow triggered by a
pushevent. - Defined the steps for checking out code, setting up the Python environment, running the sync script, and committing changes back to the repository.
- Created a synchronization workflow triggered by a
Follow these steps to replicate the process in your own project:
Copy this in your terminal to clone plone/documentation
git clone `<repository-url>`
pip install -q -r requirements-initial.txt
pip install -q -r requirements.txt- PUBLIC_URL:
- Set the URL of your website
- API Key:
- Obtain the API key from your nuclia Knowledge Box.
- Knowledge Base URL:
- Set up the variable to define the Nuclia knowledge box URL.
-
Generate Nuclia Sync Data:
python3 upload.py
-
Sync Documents:
- Run the
syncfunction to upload, update, or delete documents in Nuclia.
- Workflow Setup:
Modify the GitHub Actions workflow
nuclia_sync.ymlto match your repository structure.
- Ensure that the API key and knowledge base URL are correctly configured.
- Regularly update the sync process to keep the knowledge base up to date.
- Troubleshoot issues by checking API key validity and document URLs.
Replacing Sphinx search with Nuclia search brings improved search functionality to Plone sites. Feel free to reach out for assistance or clarification on any aspect of this documentation.
Happy syncing and searching!