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

Uploaded Source

Built Distribution

salinic-0.3.8-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.8.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.4 Linux/5.15.0-1041-azure

File hashes

Hashes for salinic-0.3.8.tar.gz
Algorithm Hash digest
SHA256 fdb34a400ddb92cad9b3b20230e1bafb2e951b9cf59ce9a2fe5f19596917a10e
MD5 19e073615bd273e8c95a93e372c7c801
BLAKE2b-256 33a982d81ed5043b9f94bb25e9c687948d044e0b376b5a7527f8662aec11e082

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for salinic-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d9f3146511fca2e2a712f7abbdcdcda8771d960696f6a0e13946a43a929ec111
MD5 e042c64b0b2fcb8eb381d168613277fb
BLAKE2b-256 ebce1641e390ae462fcb0e2881410d266e854d47c0cf7228da95178b3c6a4b7a

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