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

Uploaded Source

Built Distribution

salinic-0.3.3-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.3.tar.gz
  • Upload date:
  • Size: 12.8 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.3.3.tar.gz
Algorithm Hash digest
SHA256 911c66e5344db764b896326b183ac466a2e7816cc2126207380a025f0d18b587
MD5 7f5163ef106157ec78ad5ea16cb1d40f
BLAKE2b-256 9ef891f5d3963604cd0f7cca15a816634fc2b768532b4dca6cb7f79447b93476

See more details on using hashes here.

File details

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

File metadata

  • Download URL: salinic-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 16.7 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.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 de9d3a2f462539c80faa812b57e35595110e32babeb8c7cb1857aabf60837cd4
MD5 4a32d334c08bd9558214700ede7fc18a
BLAKE2b-256 0c42952a8db05749bf36550db0f1ed92d59ab74b8360348807b19a15caa50244

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