【问题标题】:Python SQLite FTS3 alternatives?Python SQLite FTS3 替代品?
【发布时间】:2010-12-24 21:38:09
【问题描述】:

SQLite + FTS3 for python 有什么好的替代品吗?

我正在遍历一系列文本文档,并希望根据一些文本查询对它们进行分类。例如,我可能想知道文档是否在“购买”的三个单词中提及“评级”或“升级”。此查询的 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 VIRTUAL TABLE fts USING FTS3(content TEXT)') sqlite3.OperationalError: no此类模块:FTS3

标签: python search text full-text-search


【解决方案1】:

我建议你单独安装 pysqlite2 模块。你应该确保你的系统中安装了 sqlite3,它应该有 FTS3 模块;-)

结帐http://code.google.com/p/pysqlite/downloads/list 以获取最新代码(截至 4 月 13 日,版本为 2.6.0)。这是通常的 setuptools 构建。如果您没有安装 sqlite3,或者它的库没有安装在通常的位置 /usr/lib(64),它也应该抱怨。在后一种情况下,更新您的 LD_LIBRARY_PATH 并可能调整 setup.cfg 以指定标头/lib 路径。

祝你好运, 保罗

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2014-05-17
    • 2011-04-28
    • 1970-01-01
    • 2010-11-29
    • 2017-01-18
    • 2018-08-27
    相关资源
    最近更新 更多