예제 #1
0
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')
예제 #2
0
파일: db_selecter.py 프로젝트: jphcoi/MLMTC
		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)



예제 #3
0
파일: db_builder.py 프로젝트: jphcoi/MLMTC
	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)