diff --git a/planetmint/backend/tarantool/query.py b/planetmint/backend/tarantool/query.py index 481b65d..5d55d48 100644 --- a/planetmint/backend/tarantool/query.py +++ b/planetmint/backend/tarantool/query.py @@ -130,7 +130,7 @@ def get_metadata(connection, transaction_ids: list): metadata[0][1] = json.loads(metadata[0][1]) metadata[0] = tuple(metadata[0]) _returned_data.append(metadata) - return _returned_data if len(_returned_data) > 0 else None + return _returned_data @register_query(TarantoolDBConnection) @@ -267,33 +267,14 @@ def get_txids_filtered(connection, asset_id: str, operation: str = None, return tuple([elem[0] for elem in _transactions]) - -# @register_query(TarantoolDB) -# def text_search(conn, search, *, language='english', case_sensitive=False, -# # TODO review text search in tarantool (maybe, remove) -# diacritic_sensitive=False, text_score=False, limit=0, table='assets'): -# cursor = conn.run( -# conn.collection(table) -# .find({'$text': { -# '$search': search, -# '$language': language, -# '$caseSensitive': case_sensitive, -# '$diacriticSensitive': diacritic_sensitive}}, -# {'score': {'$meta': 'textScore'}, '_id': False}) -# .sort([('score', {'$meta': 'textScore'})]) -# .limit(limit)) -# -# if text_score: -# return cursor -# -# return (_remove_text_score(obj) for obj in cursor) - @register_query(TarantoolDBConnection) def text_search(conn, search, table='assets', limit=0): pattern = ".{}.".format(search) + print("TEXT SEARCH FOR: {}".format(search)) res = conn.run( conn.space(table).call('indexed_pattern_search', (table, 1, pattern)) ) + print("TEXT SEARCH RES: {}".format(res)) return res def _remove_text_score(asset): diff --git a/planetmint/backend/tarantool/schema.py b/planetmint/backend/tarantool/schema.py index 6ef03b4..bf7017b 100644 --- a/planetmint/backend/tarantool/schema.py +++ b/planetmint/backend/tarantool/schema.py @@ -37,10 +37,10 @@ INDEX_COMMANDS = { }, "assets": { - "secondary": "assets:create_index('secondary', {unique=false,parts={1,'string',2,'string',3,'string'}})", "txid_search": "assets:create_index('txid_search', {type='hash', parts={'tx_id'}})", "assetid_search": "assets:create_index('assetid_search', {type='tree',unique=false, parts={'asset_id', 'tx_id'}})", - "only_asset_search": "assets:create_index('only_asset_search', {type='tree', unique=false, parts={'asset_id'}})" + "only_asset_search": "assets:create_index('only_asset_search', {type='tree', unique=false, parts={'asset_id'}})", + "text_search": "assets:create_index('secondary', {unique=false,parts={1,'string'}})" }, "blocks": { @@ -61,8 +61,8 @@ INDEX_COMMANDS = { }, "meta_data": { - "secondary": "meta_datas:create_index('secondary', {unique=false,parts={1,'string',2,'string'}}", - "id_search": "meta_datas:create_index('id_search', { type='hash' , parts={'transaction_id'}})" + "id_search": "meta_datas:create_index('id_search', { type='hash' , parts={'transaction_id'}})", + "text_search": "meta_datas:create_index('secondary', {unique=false,parts={2,'string'}}" }, "pre_commits": { diff --git a/planetmint/web/views/metadata.py b/planetmint/web/views/metadata.py index d8faf19..35979f8 100644 --- a/planetmint/web/views/metadata.py +++ b/planetmint/web/views/metadata.py @@ -45,6 +45,9 @@ class MetadataApi(Resource): args['table'] = 'meta_data' metadata = planet.text_search(**args) + print('########### METADATA API ############') + print(metadata) + try: # This only works with MongoDB as the backend return list(metadata)