对于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()这对我来说似乎相当贵。
我对Python的另一个问题是,它似乎不能与SQLite 2.5.4一起工作。无法识别“CREATE VIRTUAL TABLE”语法。这意味着我必须升级到Python2.6,这意味着重新测试大量现有的脚本和程序,以确保它们在2.6下工作。
有没有更好的方法?也许是一个不同的库?有没有更快的?谢谢。
发布于 2010-04-14 04:39:21
我建议您单独安装pysqlite2模块。应确保在应具有FTS3模块的系统中安装了sqlite3 ;-)
查看http://code.google.com/p/pysqlite/downloads/list以获取最新代码(截至4月13日,其版本为2.6.0)。这是常见的setuptools版本。如果您没有安装sqlite3 --或者它的库没有安装在通常的位置/usr/lib(64),它也应该会报错。在后一种情况下,更新您的LD_LIBRARY_PATH,也许还可以调整setup.cfg以指定头文件/库路径。
祝你好运,保罗
https://stackoverflow.com/questions/1874957
复制相似问题