Socket
Socket
Sign inDemoInstall

algoliaqb

Package Overview
Dependencies
0
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    algoliaqb

Algolia Query Builder


Maintainers
1

Readme

Algolia Query Builder

A library to help build queries for searching Algolia.

This package is meant to be used with the algoliasearch <https://github.com/algolia/algoliasearch-client-python>_ library.

.. image:: https://badge.fury.io/py/algoliaqb.svg :target: https://badge.fury.io/py/algoliaqb :alt: PyPI version

Problem: ^^^^^^^^

An app I have been working on has a few points of code duplication and increased complexity. This package is a way for me to fix those issues and increase readability.

Installation ^^^^^^^^^^^^

.. code-block::

pip install algoliaqb

Filter Strings ^^^^^^^^^^^^^^

By default filter_map considers all input as strings. This is pretty straight forward. Lets say for example you have the following filter map:

.. code-block::

filter_map = { "group_id": "tenant_id", }

with the following flask.args\ :

.. code-block::

{ "group_id": 1 }

AlgoliaQB will look for group_id within flask.args\ , grab the value, then remap the key and value for you.

.. code-block::

tenant_id:1

Now lets try an example with a few more filters.

.. code-block::

filter_map = { "group_id": "tenant_id", "is_reported": "is_reported" }

with the following flask.args\ :

.. code-block::

{ "group_id": 1, "is_reported": "true }

The returned filter_string is as follows.

.. code-block::

tenant_id:1 AND is_reported:true

Library Usage Example: ^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

from algoliasearch.search_client import SearchClient from algoliaqb import AlgoliaQueryBuilder from flask import request

aqb = AlgoliaQueryBuilder( search_param="search", filter_map={ "group_id": "tenant_id", "is_reported": "is_reported" } )

Extract the search query from our flask apps request.args var.

search_query = aqb.get_search_query(request.args)

Get the filter query from our request args.

filter_query = aqb.get_filter_query(request.args)

Now that we have the filter string, we just pass it into the search function.

search_client = SearchClient() index = search_client.init_index("contacts") results = index.search(search_query, {"filters": filter_query})

Keywords

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc