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')
sous_corpus_idb.append(x[0]) print str(len(sous_corpus_idb)) +' documents \n' sql_where = " id in " + str(sous_corpus_idb).replace('[','(').replace(']',')') 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)
if user_interface =='y': var2 = raw_input('do you want to add data to existing database or start a new project (type y to create a new database) any other key to add new content to existing database)') else: var2 = 'y' if var2 == 'y': print 'suppression de la base de données ' + name_data_real try: #fonctions_bdd.detruire_table(name_bdd,'billets') pkl_files= '/'.join(path_req.split('/')[:-3]) + '/pkl/'+requete shutil.rmtree(pkl_files) os.remove(name_bdd) except: pass #on cree la table billet dans la bdd base.db print 'creation de la base de données ' + name_data_real fonctions_bdd.creer_table_billets(name_bdd,'billets') else: pass #on parse d'abord le fichier de donnees de depart champs = parseur.extraire_donnees(name_data,sep) print len(champs) print " - liste de liste de champs \"champs\" mise a jour." print " - par exemple, champs[0] = ",champs[0] #on remplit la bdd avec les infos extraites champs_name = "(title,date,permalink,site,categorie1,categorie2,categorie3,content,href,requete,identifiant_unique)"#on n'enregistre pas le html brut if name_data[-4:] in [".lfl",'.rss','.doc']:#export au format .lfl: linkfluence type III ou IV fonctions_bdd.remplir_table_billets_lfl(name_bdd,'billets',champs,champs_name,requete)