Есть ли хорошие альтернативы SQLite + FTS3 для python?Альтернативы Python SQLite FTS3?
Я повторяю ряд текстовых документов и хотел бы классифицировать их в соответствии с некоторыми текстовыми запросами. Например, я могу захотеть узнать, упоминает ли документ слова «рейтинг» или «обновлено» в трех словах «купить». Синтаксис FTS3 для этого запроса заключается в следующем:
(rating OR upgraded) NEAR/3 buy
Это все хорошо, но если я использую FTS3, эта операция кажется довольно дорого. Процесс идет что-то вроде этого:
# 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()
Затем для каждого документа, сделать что-то вроде этого:
#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()
Это кажется довольно дорого для меня.
Другая проблема с SQLite FTS заключается в том, что она не работает с Python 2.5.4. Синтаксис CREATE VIRTUAL TABLE не распознается. Это означает, что мне придется перейти на Python 2.6, что означает повторное тестирование множества существующих скриптов и программ, чтобы убедиться, что они работают под 2.6.
Есть ли лучший способ? Возможно, другая библиотека? Что-то быстрее? Спасибо.
Хммм, похоже, мне нужно решить эту первую (после перехода на Python 2.6.4): c.execute ('CREATE TABLE ВИРТУАЛЬНЫХРЕНТГЕНОВСКИХ FTS С ИСПОЛЬЗОВАНИЕМ FTS3 (содержание TEXT)') sqlite3.OperationalError: нет такого модуля: FTS3 –
См. Http://stackoverflow.com/questions/1545479/force-python-to-forego-native-sqlite3-and-use-the-installed-latest-sqlite3-vers –