Metadata-Version: 1.1
Name: closeness
Version: 1.2.1
Summary: Mongodb document similarity
Home-page: https://github.com/mthahakp/mongodb-doc-closeness
Author: Thaha
Author-email: tkannippoyil@suyati.com
License: MIT
Description: Mongodb relation finder 
        =======================
        
        This is project is using to find relationship between mongodb documents
        
        This will be the initial version of the project
        
        
        ---
        
        How to use:
        
        Install package with pip
        
        `
            pip install closeness
        `
        
        ---
        
        See the example,
        
        .. code-block:: python
        
            from closeness.closeness_aggregation import ClosenessAggregation
            from pymongo import MongoClient
            client = MongoClient()
            db = client.test_database
            user_collection = db.user_collection
            user1 = {
                'name': 'User 1',
                'age': 25,
                'gender': 'male',
                'tags': [
                    "tag1",
                    "tag2",
                    "tag3",
                ],
                'friends': [
                    {"user_id": "friend1", 'name': "name1"},
                    {"user_id": "friend2", 'name': "name2"},
                    {"user_id": "friend3", 'name': "name3"},
                ]
            }
            user2 = {
                'name': 'User 2',
                'age': 25,
                'gender': 'male',
                'tags': [
                    "tag1",
                    "tag2",
                    "tag3",
                ],
                'friends': [
                    {"user_id": "friend1", 'name': "name1"},
                    {"user_id": "friend2", 'name': "name2"},
                    {"user_id": "friend3", 'name': "name3"},
                ]
            }
            user3 = {
                'name': 'User 3',
                'age': 30,
                'gender': 'female',
                'tags': [
                    "tag1",
                ],
                'friends': [
                    {"user_id": "friend3", 'name': "name3"},
                ]
            }
            user_collection.insert([user1, user2, user3])
            query_stage = {'$match': {'name': {'$ne': user1['name']}}}
            ARRAY_CMP_FIELDS = [
                {
                    'field': 'tags',
                    'weight': 3
                }
            ]
            ARRAY_DICT_CMP_FIELDS = [
                {
                    'field': 'friends',
                    'unique': 'user_id',
                    'weight': .5
                }
            ]
            STRING_CMP_FIELDS = [
                {
                    'field': 'gender',
                    'weight': .5
                }
            ]
            NUM_CMP_FIELDS = [
                {
                    'field': 'age',
                    'from': -1,
                    'to': 1,
                    'weight': .3
                }
            ]
            OUT_PUT_FIELDS = [
                'name', 'age'
            ]
            test = ClosenessAggregation(
                user1,
                query_stage,
                OUT_PUT_FIELDS,
                10,
                ARRAY_CMP_FIELDS=ARRAY_CMP_FIELDS,
                STRING_CMP_FIELDS=STRING_CMP_FIELDS,
                NUM_CMP_FIELDS=NUM_CMP_FIELDS,
                ARRAY_DICT_CMP_FIELDS=ARRAY_DICT_CMP_FIELDS,
            )
        
        
            aggregation_query = closeness_obj.get_aggregation_pipeline(
                mode=ClosenessAggregation.SIMPLE
            )
        
            result = user_collection.aggregate(aggregation_query)
        
            # {u'ok': 1.0, u'result': [
            #     {u'age': 25,
            #      u'_id': ObjectId('55c478e1b67e2055605a559e'),
            #      u'name': u'User 2',
            #      u'rank': 100.00000000000001},
            #     {u'age': 30,
            #      u'_id': ObjectId('55c478e1b67e2055605a559f'),
            #      u'name': u'User 3',
            #      u'rank': 27.131782945736436}
            # ]}
        
            aggregation_query = test.get_aggregation_pipeline(
                mode=ClosenessAggregation.FUZZY
            )
            result = user_collection.aggregate(aggregation_query)
        
            # {u'ok': 1.0,
            #  u'result': [
            #      {u'age': 25,
            #       u'_id': ObjectId('55c44846b67e2028fe51c3fb'),
            #       u'name': u'User 2',
            #       u'rank': 99.99095908598945},
            #      {u'age': 30,
            #       u'_id': ObjectId('55c44846b67e2028fe51c3fc'),
            #       u'name': u'User 3',
            #       u'rank': 45.1925335646266}
            #  ]}
        
        
Keywords: mongodb setuptools development relationship query
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
