Merge branch 'text_search' of github.com:LaurentDeMontBlanc/planetmint into text_search

This commit is contained in:
Lorenz Herzberger 2022-06-20 14:24:20 +02:00
commit f3a3e13b3e
No known key found for this signature in database
GPG Key ID: FA5EE906EB55316A
3 changed files with 10 additions and 26 deletions

View File

@ -130,7 +130,7 @@ def get_metadata(connection, transaction_ids: list):
metadata[0][1] = json.loads(metadata[0][1]) metadata[0][1] = json.loads(metadata[0][1])
metadata[0] = tuple(metadata[0]) metadata[0] = tuple(metadata[0])
_returned_data.append(metadata) _returned_data.append(metadata)
return _returned_data if len(_returned_data) > 0 else None return _returned_data
@register_query(TarantoolDBConnection) @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]) 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) @register_query(TarantoolDBConnection)
def text_search(conn, search, table='assets', limit=0): def text_search(conn, search, table='assets', limit=0):
pattern = ".{}.".format(search) pattern = ".{}.".format(search)
print("TEXT SEARCH FOR: {}".format(search))
res = conn.run( res = conn.run(
conn.space(table).call('indexed_pattern_search', (table, 1, pattern)) conn.space(table).call('indexed_pattern_search', (table, 1, pattern))
) )
print("TEXT SEARCH RES: {}".format(res))
return res return res
def _remove_text_score(asset): def _remove_text_score(asset):

View File

@ -37,10 +37,10 @@ INDEX_COMMANDS = {
}, },
"assets": "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'}})", "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'}})", "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": "blocks":
{ {
@ -61,8 +61,8 @@ INDEX_COMMANDS = {
}, },
"meta_data": "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": "pre_commits":
{ {

View File

@ -45,6 +45,9 @@ class MetadataApi(Resource):
args['table'] = 'meta_data' args['table'] = 'meta_data'
metadata = planet.text_search(**args) metadata = planet.text_search(**args)
print('########### METADATA API ############')
print(metadata)
try: try:
# This only works with MongoDB as the backend # This only works with MongoDB as the backend
return list(metadata) return list(metadata)