2009-12-09 2 views
2

Есть ли хорошие альтернативы 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.

Есть ли лучший способ? Возможно, другая библиотека? Что-то быстрее? Спасибо.

+0

Хммм, похоже, мне нужно решить эту первую (после перехода на Python 2.6.4): c.execute ('CREATE TABLE ВИРТУАЛЬНЫХРЕНТГЕНОВСКИХ FTS С ИСПОЛЬЗОВАНИЕМ FTS3 (содержание TEXT)') sqlite3.OperationalError: нет такого модуля: FTS3 –

+1

См. Http://stackoverflow.com/questions/1545479/force-python-to-forego-native-sqlite3-and-use-the-installed-latest-sqlite3-vers –

ответ

2

Я предлагаю вам установить модуль pysqlite2 отдельно. Вы должны убедиться, что у вас есть sqlite3, установленный в вашей системе, который должен иметь модуль FTS3 ;-)

Оформить заказ http://code.google.com/p/pysqlite/downloads/list для получения последнего кода (по состоянию на 13 апреля его версия 2.6.0). Это обычная сборка setuptools. Он также должен жаловаться, если у вас нет установленного sqlite3, или его библиотеки не установлены в обычном каталоге/usr/lib (64). В последнем случае обновите LD_LIBRARY_PATH и, возможно, настройте setup.cfg, чтобы указать пути заголовка/lib.

Гудлак, Пол

Смежные вопросы