Skip to main content

Lucene search for DRF and elasticsearch-dsl

Project description

Lucene way search in django

("Django" AND "DRF") OR ("Elasticserach-DSL" AND "Django Rest Elasticsearch")


Installation

Only for Django with DRF:

pip install lusya

For Django with DRF and Elasticsearch-dsl with DRF:

pip install lucyfer

Dependencies

lucyfer lusya
lucyparser + +
Django + +
djangorestframework + +
django-rest-elasticsearch + -
elasticsearch-dsl + -

Usage Example

All examples illustrates lucyfer library usage. In lusya case anything is the same except of base classes.


Create your search backend class:

from lucyfer.base.backend import LuceneSearchFilter
from lucyfer.django.backend import DjangoLuceneSearchFilterMixin
from lucyfer.elastic.backend import ElasticLuceneSearchFilterMixin


class SearchBackend(DjangoLuceneSearchFilterMixin, ElasticLuceneSearchFilterMixin, LuceneSearchFilter):
    pass

Copy reference to SearchBackend class and include it in DEFAULT_FILTER_BACKENDS in settings.py instead of default search backend:

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ('path.to.SearchBackend',)
}

Create searchsets.py file in your django-application and fill it:

from lucyfer.django.searchhelper import DjangoSearchHelperMixin
from lucyfer.django.searchset import DjangoSearchSet
from lucyfer.django.fields import CharField

from .models import MyModel


class MyModelSearchSet(DjangoSearchHelperMixin, DjangoSearchSet):
    some_field = CharField(sources=["another_field__name"], exclude_sources_from_mapping=True)

    class Meta:
        model = MyModel

    fields_to_exclude_from_mapping = ['field_to_exclude_from_mapping', ]

Include searchset class in your ModelViewSet:

from rest_framework.viewsets import ModelViewSet

from .searchsets import MyModelSearchSet


class MyModelViewSet(ModelViewSet):
    search_class = MyModelSearchSet

You have to save search_fields in your ModelViewSet if you want to save custom search possibility.

Now you can use lucene-way syntax for your view.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lucyfer-0.1.11.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lucyfer-0.1.11-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file lucyfer-0.1.11.tar.gz.

File metadata

  • Download URL: lucyfer-0.1.11.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for lucyfer-0.1.11.tar.gz
Algorithm Hash digest
SHA256 84d250dc809ccbe455c24cabeba6bd12c4d47db53ca410e11cdd66d98d76cf2b
MD5 328dfbe2c772608300a1b33a62bb49fc
BLAKE2b-256 ee89e54a7b211bbb0879a91d880e8c69faec663cc23a70a8e6e5dce8ade3fdef

See more details on using hashes here.

File details

Details for the file lucyfer-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: lucyfer-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for lucyfer-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 84f5375ded9327589900b9c379f778ff98885bbaea615214e5bb3e9ab85ae5b8
MD5 1c033a927f510bcb6d7d81ba424b80e8
BLAKE2b-256 7d7dec1758109cddd7fb96b30d7e4589ba6a8baa206a21be9cc49b5962e85fd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page