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

Uploaded Source

Built Distribution

salinic-0.3.10-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.10.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.5.0-1018-azure

File hashes

Hashes for salinic-0.3.10.tar.gz
Algorithm Hash digest
SHA256 344682bb2c8ce507cc050c0c23d5967d5a2e67bbab5afd67b99bc55c66a7b47b
MD5 133133dfd0835f32e68bde63b3f79846
BLAKE2b-256 4a26fa7df96986d10dbd094abc6bd144f50ae21230e1753a199200d823965d59

See more details on using hashes here.

File details

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

File metadata

  • Download URL: salinic-0.3.10-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.5.0-1018-azure

File hashes

Hashes for salinic-0.3.10-py3-none-any.whl
Algorithm Hash digest
SHA256 9b907ed02a60710104aeee23a76eaedc02bd8f5ef5bb3ea9991b35594ddc5282
MD5 fa63e5b0369105c717d0c3b235699b85
BLAKE2b-256 dd5e26a2bcb0a61f12b52d580df813c642f0348242f39b376547ef814063df2d

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