如何在类似查询中使用sqlite icu

时间:2011-07-05 11:25:51

标签: c++ sqlite

嗨,我将我的sql语句修改为

CREATE VIRTUAL TABLE [v_fts] USING fts4 
(
 [title], 
tokenize=icu
)" 

但是当我尝试插入数据时,我收到错误SQL logic error or missing database

修改

我使用 - DSQLITE_ENABLE_ICU

编译了带有icu选项的sqlite

选项。

如何加载icu?

我在这里用makefile上传了shell代码

http://www.2shared.com/file/8hxA3KIn/sqlite.html

all: release32

CFLAGS = -fPIC -O6 -DNO_TCL -DSQLITE_THREADSAFE=1 -DHAVE_USLEEP=1 -DSQLITE_ENABLE_FTS3=1  -O3 -Os  -I. -DSQLITE_ENABLE_ICU `/home/vivek/downloads/icu/des32/bin/icu-config --cppflags`

export LDFLAGS += -Wl,--start-group 
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicui18n.a
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicuuc.a
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicudata.a
export LDFLAGS += -lcrypt -ldl -lz -lrt  -lssl -lpthread   
export LDFLAGS += -Wl,--end-group

OBJ=sqlite3.o\
    shell.o\
    icu.o\

release32: $(OBJ)
     g++34  -fno-exceptions -fno-operator-names ${CFLAGS} -DNDEBUG -m32  -static  $(OBJ) $(LDFLAGS) -o s.out
%.o:%.c
    gcc34 ${CFLAGS} -DNDEBUG -m32 -c    $<

我的查询是

CREATE VIRTUAL TABLE [vivek_fts] USING fts4 ( [title],tokenize=icu en_US)
insert into vivek_fts values("a");

1 个答案:

答案 0 :(得分:1)

根据the full text search documentation,您应该使用tokenize=icu en_US(例如,指定ICU区域设置标识符)。

此外,您应该加载ICU。