Skip to main content

Search abstraction layer

Project description

Tests

Salinic

Salinic - provides modular search. It features a unified API that allows you to plug in different search backends. Currently, it supports only Xapian backend.

Usage

Declare your search schema:

from typing import Optional
from typing_extensions import Annotated

from salinic.field import IdField, KeywordField, TextField
from salinic.schema import Schema


class Index(Schema):
    id: Annotated[str, IdField(primary_key=True)]
    user_id: str
    parent_id: str
    title: Annotated[str, TextField()]
    text: Annotated[Optional[str], TextField()] = None
    tags: Annotated[Optional[list[str]], KeywordField()] = []

Index your documents:

    from salinic import Session, create_engine

    engine = create_engine("xapian:////search_index")
    session = Session(engine)

    for document in all_your_documents():
        entity = Index(
            id=str(document.id),
            user_id=str(document.user_id),
            parent_id=document.parent_id,
            title=document.title,
            text=document.text,
            tags=document.tags
        )
        session.add(entity)

Search your documents:

    from salinic import Session, create_engine

    engine = create_engine("xapian:////search_index")
    session = Session(engine)

    sq = Search(Index).query(" your query string ")

    for found in session.exec(sq):
        print(found)  # found is instance of IndexEntity

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

salinic-0.2.8.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

salinic-0.2.8-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file salinic-0.2.8.tar.gz.

File metadata

  • Download URL: salinic-0.2.8.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1042-azure

File hashes

Hashes for salinic-0.2.8.tar.gz
Algorithm Hash digest
SHA256 06eb7369324ea31c2852cc4050017b2a1dc295ccda55e347066b96f757933d0a
MD5 59c67b2a9796f8382e9f6d765e2573d5
BLAKE2b-256 155527ce293007233f32eb3473a46e3c7e59cebdf14bfaec9f78a2ea66a0e761

See more details on using hashes here.

File details

Details for the file salinic-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: salinic-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1042-azure

File hashes

Hashes for salinic-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2d66dca3d6d3ecabd73aa03857d2a00876986b9a6183b44a89a91c2955bc5496
MD5 cea1a61a8f9409983f4e184fc5b6f73b
BLAKE2b-256 fa8ff94f1941d561cac0b246c40280064552c12247c980e0a8482508e0d4bf40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page