print 'creation de la nouvelle base de données ' + name_bdd_new shutil.copy(name_bdd, name_bdd_temp) try: fonctions_bdd.detruire_table(name_bdd,'billets2') except: pass try: fonctions_bdd.creer_table_billets(name_bdd,'billets2')#creer une table billet2 fonctions_bdd.add_column(name_bdd,'billets2','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass fonctions_bdd.insert_select(name_bdd,'billets','billets2',sql_where) fonctions_bdd.detruire_table(name_bdd,'billets') fonctions_bdd.renommer_table(name_bdd,'billets2','billets') shutil.copy(name_bdd, name_bdd_new) shutil.copy(name_bdd_temp, name_bdd) os.remove(name_bdd_temp) def nettoyer_site(chaine,chainel,site): sortie = fonctions_bdd.select_bdd_table_champ_complet(name_bdd,'billets','id,content,content_lemmatise','site',site) entree,entreel=[],[] for x in sortie: idx = x[0] text = x[1]
def select_query(query=[]): #on définit une nouvelle table et une table billets temporaires #specific_nlemmes est la requête de base issue de query.csv. if len(query)==0: specific_nlemme = misc.lire_dico_classes(path_req + 'query.csv',language) specific_nlemmes=[] for x in specific_nlemme: specific_nlemmes=specific_nlemmes+x.split('***') else: specific_nlemmes = query print specific_nlemmes print '\n' + str(len(specific_nlemmes)) +' terms in the query ' #on récupère les ids des concepts présents dans la requête dans query_ids query_ids =[] try: concepts = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'concepts','id,concepts') for con in concepts: if con[1] in specific_nlemmes: query_ids.append(con[0]) except: #il se peut que la base n'est jamais été indexée pass try: #tous les termes de la query ont déjà été indexés sous_corpus_idb_vect = fonctions_bdd.select_bdd_table_champ_simple(jesaispas,name_bdd,'concept2billets','id_b', ' where concept in '+ str(query_ids).replace('[','(').replace(']',')')) sous_corpus_idb=[] for x in sous_corpus_idb_vect: if not x[0] in sous_corpus_idb: sous_corpus_idb.append(x[0]) except: #tous les termes de la query n'ont pas encore été indexés, on passe à une méthode like. where_like = " where content_lemmatise like '%" where_like = where_like + " %' or content_lemmatise like '% ".join(specific_nlemmes) + " %'" print where_like sous_corpus_idb = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'billets','id',where_like ) print str(len(sous_corpus_idb)) +' documents retrieved \n' sql_where = " id in " + str(sous_corpus_idb).replace('[','(').replace(']',')') #print sql_where print 'creation de la nouvelle base de données ' + name_bdd_new shutil.copy(name_bdd, name_bdd_temp) try: fonctions_bdd.detruire_table(name_bdd,'billets2') except: pass try: fonctions_bdd.add_column(name_bdd,'billets','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass try: fonctions_bdd.creer_table_billets(name_bdd,'billets2')#creer une table billet2 fonctions_bdd.add_column(name_bdd,'billets2','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass fonctions_bdd.insert_select(name_bdd,'billets','billets2',sql_where) fonctions_bdd.detruire_table(name_bdd,'billets') fonctions_bdd.renommer_table(name_bdd,'billets2','billets') shutil.copy(name_bdd, name_bdd_new) shutil.copy(name_bdd_temp, name_bdd) os.remove(name_bdd_temp) return specific_nlemmes,fonctions_bdd.count_rows(name_bdd,'billets')