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

Uploaded Source

Built Distribution

salinic-0.3.4-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: salinic-0.3.4.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.0 CPython/3.11.4 Linux/5.15.0-1042-azure

File hashes

Hashes for salinic-0.3.4.tar.gz
Algorithm Hash digest
SHA256 7fc467197ca888d34299fd5282cc312736616ca4dc31becfc4053f7f6e15178f
MD5 50de6458e548896e7f9d3c7e09decbe6
BLAKE2b-256 651e84a6ba0fd68149f2bf9f6b822e6e218a4c85bf67bd0e8bb415c9addcba97

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for salinic-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fa4f508924d1d7f767449b3b9c494b2b5c6d98b427284bfa4cffd51db28625f8
MD5 733a58d6a5db605a1a1b12efc4effae1
BLAKE2b-256 13da9f0aa90715218e2b4968d223337568f285ef8dc385acc66b73ca4dd8c008

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