Coder Social home page Coder Social logo

aldryn-search's Introduction

aldryn-search

This package provides a search indexes for easy Haystack 2 integration with django CMS.

Usage

After installing aldryn-search through your package manager of choice, add aldryn_search to your INSTALLED_APPS. If you run a multilingual CMS setup, you have to define a haystack backend for every language in use:

HAYSTACK_CONNECTIONS = {
    'en': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://my-solr-server/solr/my-site-en/',
        'TIMEOUT': 60 * 5,
        'INCLUDE_SPELLING': True,
        'BATCH_SIZE': 100,
    },
    'fr': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://my-solr-server/solr/my-site-fr/',
        'TIMEOUT': 60 * 5,
        'INCLUDE_SPELLING': True,
        'BATCH_SIZE': 100,
    },
}

To make sure the correct backend is used during search, add aldryn_search.router.LanguageRouter to your HAYSTACK_ROUTERS setting:

HAYSTACK_ROUTERS = ['aldryn_search.router.LanguageRouter',]

When using multiple languages, usually there's one search backend per language, when indexing it's important to know which language is currently being used, this can be facilitated by the ALDRYN_SEARCH_LANGUAGE_FROM_ALIAS setting, this setting could be a callable or a string path that resolves to one.

Please keep in mind that it's usually not a good idea to import things in your settings, however there are cases where it seems overkill to create a function to handle the alias, for example:

ALDRYN_SEARCH_LANGUAGE_FROM_ALIAS = lambda alias: alias.split('-')[-1]

the example above could be used when using multiple languages and sites, all backends could have a language suffix.

The same could be achieved using a function defined somewhere else in your code like so:

ALDRYN_SEARCH_LANGUAGE_FROM_ALIAS = "my_app.helpers.language_from_alias"

If any of the above return None then settings.LANGUAGE_CODE will be used.

By default this setting evaluates to a function that checks if the alias is in settings.LANGUAGES and if so it uses the alias as a language.

For a complete Haystack setup, please refer to their documentation.

For more documentation, see the docs folder.

Integration with django CMS

aldryn-search comes with an App Hook for django CMS, and a search view using Django's class based views. If you want to use this app hook, you can either subclass it and register it yourself, or set ALDRYN_SEARCH_REGISTER_APPHOOK to True.

For pagination, aldryn-search uses aldryn_common.paginator.DiggPaginator. If you want to use this built-in pagination, make sure to install`django-spurl <https://github.com/j4mie/django-spurl>`_, and add then add spurl to INSTALLED_APPS.

Pagination

Results are paginated according to the ALDRYN_SEARCH_PAGINATION setting (default: 10). If set to None pagination is disabled.

aldryn-search's People

Contributors

czpython avatar fmarco avatar chronossc avatar jakob-o avatar beniwohli avatar qris avatar evildmp avatar mkoistinen avatar johnraz avatar yakky avatar finalangel avatar christianbertschy avatar leo-naeka avatar mikek avatar stefanfoulis avatar igorpejic avatar jsma avatar

Watchers

Patrick avatar Jean Christophe André avatar James Cloos avatar  avatar  avatar Moussa NOMBRÉ avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.