先讲一下背景:
要做一个OA当中的档案管理,要求可以进行全文检索.虽然blob类型可以用来存放word,pdf等格式的文档,但是如果全部存入数据库的话可能会造成数据库存储量很大,因此考虑是不是能利用oracle的索引,而文件另外存放.将一份word文档存入oracle数据表mydocs中一记录的file (blob类型)字段中.建了一个中文词法分析器:ctx_ddl.create_preference ('my_lexer', 'chinese_lexer');然后建立索引CREATE INDEX  myindex ON mydocs(file) indextype is ctxsys.context  parameters('lexer my_lexer');
然后  select * from mydocs where contains(file,'公司办公流程')>0  可以查到记录.
然而  将file字段置null之后 dr$myindex$i这张表里索引所依赖的term还在,在没有同步和优化过的情况下,再执行上面的查询已经查不到数据了.
疑问:context类型的索引好像是对表进行DML操作后,并不会自动同步索引,为什么修改了字段的内容也会影响到索引呢?
换一种方法用:Oracle Text对本地文件的检索(建立索引的时候,Oracle读取硬盘上的文件并且将索引存储在Oracle数据库中)
在这种情况下,删除了本地的文件以后,索引还是在的,通过全文检过还能找到相应的记录.
但是这种方法不知道适不适用UNIX下的数据库.
不知道有没有达人了解这方面的知识,可以提供点帮助.