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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.7.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.7.tar.gz
Algorithm Hash digest
SHA256 ae43cd5828341b0143e2bc7be6d33cc898ea3d20712ca3f7c7819d6aae0b923d
MD5 26b309f36f3b9f933f52599467e25c17
BLAKE2b-256 6e99ae94e2a5ee0c2dc7b077966429171483af4b12ad58cb8bdc7312e5a47691

See more details on using hashes here.

File details

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

File metadata

  • Download URL: salinic-0.3.7-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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 f39cc57644ae7a4ec515d39c4fe6d7209258202a8c9c57b7a31d0ae913db1bc1
MD5 9318c69e997bae0c1df2c69e2cc6f700
BLAKE2b-256 555abe00f03daa70adafeefad02170e30254c82ab1ce465afe941139d9186cc8

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