在一个表中有两个Unicode记录,一个是简体中文,一个是日文。当执行一个查询,为什么它会返回所有的记录,而不是根据搜索条件正确的那个呢?(Version: 4.2)
当在DBMaster4.2版本中设置DB_LCODE的值为1时,SIGNATURE TEXT INDEX将会返回所有,但是IVF TEXT INDEX将返回正确的那个。现在SIGNATURE TEXT INDEX不支持Unicode,IVF TEXT INDEX支持。所以,我们建议删除SIGNATRUE TEXT INDEX,建立 IVF TEXT INDEX来解决此问题。
请参考以下的示例:
dmSQL>create table test_srh (ID serial,Name char(30),TextBlock NCLOB);
dmSQL>create text index IDXTEXTBLOCK on test_srh (TextBlock);
dmSQL>insert into test_srh (TextBlock) values ('a080505b'u); <-- 塞入资料为 肠子
dmSQL>insert into test_srh (TextBlock) values ('e130fc30eb30'u); <-- 塞入资料为 メール
dmSQL>rebuild text index IDXTEXTBLOCK for test_srh; <-- 重建 text index
dmSQL>select * from test_srh where TextBlock match 'a080'u; <-- 查询 肠
ID NAME TEXTBLOCK
=========== ============================== ================
1 NULL a080505b
2 NULL e130fc30eb30
dmSQL> drop text index idxtextblock from test_srh;
dmSQL> create ivf text index idxtextblock on test_srh (TextBlock);
dmSQL> rebuild text index IDXTEXTBLOCK for test_srh;
dmSQL> select * from test_srh where TextBlock match 'a080'u;
ID NAME TEXTBLOCK
=========== ============================== ================
1 NULL a080505b