gpt4 book ai didi

sqlite - 如何在sqlite中使用editdist3

转载 作者:行者123 更新时间:2023-12-02 01:33:03 25 4
gpt4 key购买 nike

根据answer to another question ,在 sqlite 中,编辑距离是在名为 editdist3 的 SQL 函数中实现的。 (另请比较 documentation )

现在,当我尝试使用它时,我得到的只是一个它不存在的错误:

╰┄┄> sqlite3
SQLite version 3.11.1 2016-03-03 16:17:53
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> CREATE TABLE test (col1 TEXT);
sqlite> INSERT INTO test VALUES ('foobar');
sqlite> SELECT * FROM test WHERE editdist3(col1, 'f00bar') < 3;
Error: no such function: editdist3

我在 Gentoo Linux 上使用 sqlite-3.11.1,并带有(默认)USE 标志 icureadlinesecure-delete

最佳答案

事实证明 editdist3 包含在必须显式加载的 sqlite 扩展中。由于我在 Gentoo sqlite 包中没有找到它,所以我也必须自己构建它。作为documentation说:

The spellfix1 virtual table is not included in the SQLite amalgamation and is not a part of any standard SQLite build. It is a loadable extension.

首先我获取了源代码

wget https://sqlite.org/2016/sqlite-src-3110100.zip
unzip sqlite-src-3110100.zip

然后必须编译

gcc -shared -fPIC -Wall -Isqlite-src-3110100 sqlite-src-3110100/ext/misc/spellfix.c -o spellfix.so

终于可以加载了

.load ./spellfix

请注意,sqlite 会自动附加扩展名 .so

要在 python 中使用它——这是我的初衷——需要完成以下操作:

db = sqlite3.connect(':memory:')

db.enable_load_extension(True)
db.load_extension('./spellfix')
db.enable_load_extension(False)

关于sqlite - 如何在sqlite中使用editdist3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36427820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com