在一个表中有两个Unicode记录,一个是简体中文,一个是日文。当执行一个查询,为什么它会返回所有的记录,而不是根据搜索条件正确的那个呢?(Version: 4.2)

~ 0 min
2016-02-24 04:40

当在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

平均分: 0 (0 投票)

你不能对该内容发表评论

标签