# Notebook Jupyter per la produzione semi-automatica dei test # definire le ricerche da effettuare e il nome del file dove visualizzare i risultati # %% # Test code using Jupyter -- produce a JSON of queries and results # %% from simple_query_test_pandas import ricercaforme from simple_query_test_pandas import ricercalemmi from simple_query_test_pandas import ricercaformelemmi from simple_query_test_pandas import interpreter import json import os ###### #SETUP ###### # Definisco la funzione per convertire il DataFrame in formato JSON def df_to_json_records(df): return df.to_dict(orient='records') # Definisco la funzione per scrivere i risultati in un file JSON def write_to_json(data, filename, mode='w'): with open(filename, mode) as f: json.dump(data, f, indent=4) # aggiungi indentazione di 4 spazi # Definisco la funzione per leggere i risultati da un file JSON def read_from_json(filename): if not os.path.isfile(filename): return [] with open(filename, 'r') as f: content = f.read() if content: return json.loads(content) else: return [] # Creo una lista vuota per i risultati all_results = [] # Creo una lista vuota per le ricerche all_searches = [] # Definisco gli esempi di ricerca da fare path_db_0 = "../../db/first_db" # Path per i file json path = "test_data/" # Definisco il nome del file per i risultati filename_results = 'results.json' # Definisco il nome del file per le ricerche filename_searches = 'searches.json' # %% # Definisco le ricerche search_entries = [ {"tipo_ricerca": "formaLemma", "parola_cercata": "pro*", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0}, {"tipo_ricerca": "forma", "parola_cercata": "prov*", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0}, {"tipo_ricerca": "lemma", "parola_cercata": "prova", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0} ] # Eseguo le ricerche for entry_info in search_entries: print ("Ricerca di: " + entry_info["parola_cercata"]) # Definisco il tipo di ricerca, la parola cercata e le altre informazioni richieste tipo_ricerca = entry_info["tipo_ricerca"] parola_cercata = entry_info["parola_cercata"] path_db = entry_info["path_db"] ricerca_espansa = entry_info["ricerca_espansa"] iniziali_raddoppiate = entry_info["iniziali_raddoppiate"] search_info = {"tipo": tipo_ricerca, "stringa": parola_cercata, "espansa": ricerca_espansa, "raddoppiata": iniziali_raddoppiate} # Eseguo la ricerca if tipo_ricerca == "formaLemma": df = ricercaformelemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate) elif tipo_ricerca == "forma": df = ricercaforme(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate) else: df = ricercalemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate) results = df_to_json_records(df) # Salvo i risultati nella lista di tutti i risultati all_results.append(results) all_searches.append(search_info) # Scrivo tutti i risultati della ricerca nel file JSON try: # write_to_json(all_results, os.path.join(path, filename_results), mode='a') # to append instead of overwriting write_to_json(all_results, os.path.join(path, filename_results)) print("Risultati della ricerca salvati nel file JSON "+ filename_results) except: print("La lista di ricerche non è un JSON valido") # Scrivo tutte le ricerche eseguite nel file JSON try: write_to_json(all_searches, os.path.join(path, filename_searches)) print("Ricerche salvate nel file JSON " + filename_searches) except: print("La lista di risultati non è un JSON valido") # %%