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 Xapian and Solr backends.

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 MyModel(Schema):
    """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 IndexRW, create_engine

    engine = create_engine("xapian:////search_index")
    index = IndexRW(engine, schema=MyModel)

    for document in all_your_documents():
        model = MyModel(
            id=str(document.id),
            user_id=str(document.user_id),
            parent_id=document.parent_id,
            title=document.title,
            text=document.text,
            tags=document.tags
        )
        index.add(model)

Search your documents:

    from salinic import IndexRO, create_engine

    engine = create_engine("xapian:////search_index")
    index = IndexRO(engine, schema=MyModel)

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

    for found in index.search(sq):
        print(found)  # found is instance of MyModel

The only modification of your for changing to different search engine backend, is the first argument of the create_engine method e.g. from "xapian:////search_index" to "solr://localhost:8983/my-index-name".

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.3.9.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

salinic-0.3.9-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.9.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.2.0-1011-azure

File hashes

Hashes for salinic-0.3.9.tar.gz
Algorithm Hash digest
SHA256 4139b38d0131ad8e014b0f86fb281eb7e702166f65b0c8e92c9e5c2b5a706204
MD5 371cabd237533b4f062eb9b60d2714c8
BLAKE2b-256 47188fe918155d156336763a724c0df8ca5b84c4bcc7928de38f5a01487dfcd1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: salinic-0.3.9-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.2.0-1011-azure

File hashes

Hashes for salinic-0.3.9-py3-none-any.whl
Algorithm Hash digest
SHA256 94f019e1ba8047402ae9b5fd5ab87d1248b0e23b71be5d4da7e9de347ee0ddb5
MD5 c69ee02dca296818c27b2a33be7284e1
BLAKE2b-256 456a458f182666ec824496b1d8367d21bffe6fe27222ae7b51e6abbf6fa51206

See more details on using hashes here.

Supported by

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