Existe-t-il de bonnes alternatives à SQLite + FTS3 pour python?Python SQLite FTS3 alternatives?
Je suis en train d'itérer sur une série de documents texte, et je voudrais les classer en fonction de certaines requêtes de texte. Par exemple, je pourrais vouloir savoir si un document mentionne les mots «évaluation» ou «amélioré» dans les trois mots de «acheter». La syntaxe FTS3 pour cette requête est la suivante:
(rating OR upgraded) NEAR/3 buy
C'est bien beau, mais si je l'utilise FTS3, cette opération semble assez cher. Le processus ressemble à ceci:
# create an SQLite3 db in memory
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('CREATE VIRTUAL TABLE fts USING FTS3(content TEXT)')
conn.commit()
Ensuite, pour chaque document, faire quelque chose comme ceci:
#insert the document text into the fts table, so I can run a query
c.execute('insert into fts(content) values (?)', content)
conn.commit()
# execute my FTS query here, look at the results, etc
# remove the document text from the fts table before working on the next document
c.execute('delete from fts')
conn.commit()
Cela me semble assez cher.
L'autre problème que j'ai avec SQLite FTS est qu'il ne semble pas fonctionner avec Python 2.5.4. La syntaxe 'CREATE VIRTUAL TABLE' n'est pas reconnue. Cela signifie que je devrais passer à Python 2.6, ce qui implique de tester à nouveau de nombreux scripts et programmes existants pour s'assurer qu'ils fonctionnent sous 2.6.
Y a-t-il un meilleur moyen? Peut-être une bibliothèque différente? Quelque chose de plus rapide? Je vous remercie.
Hmmm, semble que je dois résoudre ce premier (après mise à niveau vers Python 2.6.4): c.execute ('CREATE TABLE FTS VIRTUELS EN UTILISANT FTS3 (contenu TEXT)') sqlite3.OperationalError: aucun module de ce type: FTS3 –
Voir http://stackoverflow.com/questions/1545479/force-python-to-forego-native-sqlite3-and-use-the-installed-latest-sqlite3-vers –