mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-13 14:44:29 -04:00

Some checks are pending
CodeQL / Analyze (python) (push) Waiting to run
Build Debian package / build (push) Waiting to run
Build Docker image / buildx (push) Waiting to run
Build Homebrew package / build (push) Waiting to run
Build GitHub Pages website / build (push) Waiting to run
Build GitHub Pages website / deploy (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Run tests / python_tests (ubuntu-22.04, 3.11) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
__package__ = 'archivebox.plugantic'
|
|
|
|
from typing import Iterable, List
|
|
from benedict import benedict
|
|
from pydantic import Field
|
|
|
|
|
|
from .base_hook import BaseHook, HookType
|
|
|
|
|
|
|
|
class BaseSearchBackend(BaseHook):
|
|
hook_type: HookType = 'SEARCHBACKEND'
|
|
|
|
name: str = Field() # e.g. 'singlefile'
|
|
|
|
@staticmethod
|
|
def index(snapshot_id: str, texts: List[str]):
|
|
return
|
|
|
|
@staticmethod
|
|
def flush(snapshot_ids: Iterable[str]):
|
|
return
|
|
|
|
@staticmethod
|
|
def search(text: str) -> List[str]:
|
|
raise NotImplementedError("search method must be implemented by subclass")
|
|
|
|
|
|
def register(self, settings, parent_plugin=None):
|
|
# self._plugin = parent_plugin # for debugging only, never rely on this!
|
|
|
|
# Install queue into settings.SEARCH_BACKENDS
|
|
settings.SEARCH_BACKENDS = getattr(settings, "SEARCH_BACKENDS", None) or benedict({})
|
|
settings.SEARCH_BACKENDS[self.id] = self
|
|
|
|
# Record installed hook into settings.HOOKS
|
|
super().register(settings, parent_plugin=parent_plugin)
|
|
|