对一个老项目进行改造,数据库用的是jdbc+strus1,其中一个表中的老数据将近1W条,内容存在CLOB中,文字几乎都是上千,做了一个全文模糊查找,第一个感觉是必须用lucene这个专业的搜索引擎技术来弄,后来经理说不必那么麻烦了,直接在数据库查查就行了,然后我用了
先建索引:
查询的SQL:
注意,contains方法只有创建了 INDEXTYPE is CTXSYS.CONTEXT才有效的。
最后运行程序,测试结果证明效果非常明显.
select XXOO FROM T_XXOO WHERE XXOO like '%xxoo%'
,结果就悲剧了,几乎每次查询都让我等个至少十几秒,起初以为
create index IDX_XXOO on T_XXOO(XXOO);
然后就可以了,但是结果你会发现,完全的模糊查找效果并不明显。后来发现“Oracle text译为全文检索技术,是智能信息管理的关键技术之一,Oracle Text作为Oracle9i的一个组件,提供了强大的全文检索功能,用Oracle9i做后台数据库,就可以充分利用其全文检索技术,构建复杂的大型文档管理系统....”,于是果断使用oracle自带的全文检索技术,
先建索引:
CREATE INDEX content_IDX ON T_KM_ARTICLECONTENT(content) INDEXTYPE is CTXSYS.CONTEXT;
查询的SQL:
select XXOO from T_XXOO T2 where contains(T2.content,'要查找的关键字')>0
注意,contains方法只有创建了 INDEXTYPE is CTXSYS.CONTEXT才有效的。
最后运行程序,测试结果证明效果非常明显.