Metadata-Version: 1.1
Name: elasticfun
Version: 0.3.3
Summary: ElasticSearch Query functionality using Django
Home-page: https://github.com/Yipit/elasticfun
Author: Lincoln de Sousa, Nitya Oberoi
Author-email: lincoln@yipit.com, nitya@yipit.com
License: GPL
Description: # elasticfun
        
        A small set of tools to make it easier and fun to use pyelasticsearch.
        Our main goals here are:
        
         * Provide an easy and consistent way to build queries
         * Hook up a connection manager to the django settings system
         
        Some of our long term goals
        
         * An API to declare indexes and fields
         * A set of commands to manage (update, rebuild, clean) indexes
        
        ## The Query object
        
        This API aims to give you a pleasant way to build even complex queries
        for elasticsearch. The following snippet demonstrates how it works:
        
        ```python
        >>> from elasticfun import Query
        >>> query = (Query('fitness') & (Query(category='Accessories') | Query(category='Sport Wear')))
        >>> str(query)
        '("fitness" AND (category:"Accessories" OR category:"Sport Wear"))'
        ```
        
        ### Search words on query objects
        
        The main constructor of the `Query` object receives only one expression
        at once, which means that if you need to combine different words/fields
        to build your query, you will have to use different instances of this
        object. Which means that this:
        
        ```python
        >>> from elasticfun import Query
        >>> str(Query('ice cream'))
        '"ice cream"'
        ```
        
        Is completely different from this:
        
        ```python
        >>> from elasticfun import Query
        >>> str(Query('ice') & Query('cream'))
        '("ice" AND "cream")'
        ```
        
        And completely different from this:
        
        ```python
        >>> from elasticfun import Query
        >>> str(Query('ice') | Query('cream'))
        '("ice" OR "cream")'
        ```
        
        ### Building a query from user input
        
        The above API is meant to be used by programmers to build queries
        dynamically through code. But as we know, a very common case for a query
        builder object is to receive user input e.g. from a search box.
        
        ```python
        >>> from elasticfun import Query
        >>> str(Query.from_user_input('ice cream'))
        '("ice" AND "cream")'
        ```
        
        But, also you can change the default operator for the same operation to
        get a result like this:
        
        ```python
        >>> from elasticfun import Query
        >>> str(Query.from_user_input('ice cream', default_op='OR'))
        '("ice" OR "cream")'
        ```
        
        ## Test coverage
        
        The very first line of this library was a unit-test, it was completely
        written under the TDD concepts and we're planning to keep it that way.
        If you're willing to send a patch to our humble project, please ensure
        that the coverage won't decrease at all.
        
        Also, I strongly suggest you to start your proposed feature or bug fix
        by writing the tests. It will certainly decrease the complexity of the
        actual code and thus improve it's quality.
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: Microsoft
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
