如何在Windows上的sqlite3中启用全文搜索

时间:2011-08-23 15:29:08

标签: c sqlite visual-c++

我使用Visual C ++ 2008在Windows 7上编译了sqlite 在'sqlite3.c'文件中启用了FTS4,如下所示

#ifndef SQLITE_ENABLE_FTS3
#define SQLITE_ENABLE_FTS3
#define SQLITE_ENABLE_FTS4
#define SQLITE_ENABLE_FTS3_PARENTHESIS
#endif

调试版本工作正常,但发布版本因错误而失败 “尝试创建表格时没有这样的模块FTS3”

CREATE VIRTUAL TABLE DOCS USING FTS3(DOC_NAME, DOC)

发生了什么事?

2 个答案:

答案 0 :(得分:0)

来自http://www.sqlite.org/fts3.html

部分 2。编译和启用FTS3和FTS4

  

如果使用基于amalgamation autoconf的构建系统,则在运行“configure”脚本时设置CPPFLAGS环境变量是设置这些宏的简便方法。例如,以下命令:

CPPFLAGS="-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS" ./configure <configure options>

通常传递给configure脚本的那些选项(如果有的话)。

  

由于FTS3和FTS4是虚拟表,因此SQLITE_ENABLE_FTS3编译时选项与SQLITE_OMIT_VIRTUALTABLE选项不兼容。

     

如果SQLite的版本不包含FTS模块,则任何尝试准备SQL语句以创建FTS3或FTS4表或以任何方式删除或访问现有FTS表都将失败。返回的错误消息类似于“没有这样的模块:ftsN”(其中N是3或4)。

     

如果ICU库的C版本可用,则也可以使用定义的SQLITE_ENABLE_ICU预处理器宏编译FTS。使用此宏进行编译可启用使用ICU库的FTS标记生成器,使用指定语言和区域设置的约定将文档拆分为术语(单词)。

-DSQLITE_ENABLE_ICU

答案 1 :(得分:0)

我在Windows 10上遇到了同样的问题。我尝试编译共享库但是我收到了以下错误:

gcc -Os -shared -I. -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_EXPLAIN_COMMENTS   -DHAVE_USLEEP -DHAVE_READLINE  shell.c sqlite3.c -ldl -lreadline -lncurses  -o sqlite3.dll
  

C:/ msys64 / mingw64 / bin中/../ LIB / GCC / x86_64的-W64-的mingw32 / 7.3.0 /../../../../ x86_64的-W64-的mingw32 / bin中/ LD .exe:找不到-ldl

     

collect2.exe:错误:ld返回1退出状态

然后我在没有-ldl的情况下尝试过它。

gcc -O3 -shared -I. -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_EXPLAIN_COMMENTS   -DHAVE_USLEEP -DHAVE_READLINE  shell.c sqlite3.c -lreadline -lncurses  -o sqlite3.dll
相关问题