Oracle下对表建全文索引
来源:互联网 发布:qq飞车黑夜传说数据 编辑:程序博客网 时间:2024/06/10 11:56
1、对于中文,我们确定好全文索引的词法分析器,具体看一下这篇文章
http://blog.csdn.net/renfengjun/article/details/40266741
常用的中文词法分析器有
chinese_vgram_lexer和chinese_lexer
经过比较后我们决定使用chinese_lexer词法分析器,注意chinese_lexer只支持utf-8字符集
2、设置全文索引的设置偏好(preferences)。
使用“偏好”来指定索引信息,例如你的文件存储在哪里,你的文档如何过滤。创建“偏好”,并设置其属性。
oracle官网的提供的创建preference如下:https://docs.oracle.com/cd/E11882_01/text.112/e24436/cdatadic.htm#CCREF1919
exec ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); COMMIT; //个人感觉这里是key,map先保存一个参数变量
然后在创建索引时使用这个preference:
CREATE INDEX myindex on my_master(body) indextype is ctxsys.context parameters('lexer my_lexer'); COMMIT其种myindex是要建的全文索引名称,master是表名,body是master表的字段(也就是要建索引的字段),下面那一句类似指定索引的上下文,加载我们前面设置词法分析器的preference
3、注意:
全文索引只能在类型:VARCHAR2, CLOB, BLOB, CHAR, BFILE, XMLType, and URIType上创建;
不能在类型:NCLOB,NVARCHAR2,NCHAR,DATE,NUMBER,TIMESTAMP上创建;
所有语句都要用commit; 进行提交!!!
4、索引创建成功后,会在库中新建四个表,DR开头
http://yupengcc.iteye.com/blog/1265243
其中i表的数据在数据库进行DML操作时并不会自动同步进去,所以需要自行设置同步
5、使用索引查询时需要使用contains关键字,而不是like
select * from t_address where CONTAINS(street,'某街道')>0;
(注:全文索引只能做到 like '%string%' 而不能做到 like 'string%'的效果)
思考:既然索引不会自动伴随着DML操作去同步,那现在假设一个这样的场景:
设对A表的a列添加了全文索引,假设当前a的值只有‘一’,
当表里新增一条数据,a=‘二’时,我们此时select * from A where CONTAINS(a,'二')>0 会搜不到相应的记录。
因此索引要使用oracle的job去进行维护。
exec ctx_ddl.sync_index('IDX_TEST');--同步索引,将新的数据同步到索引
exec ctx_ddl.optimize_index('IDX_TEST','FULL');--优化索引,清除已删除的数据涉及到的索引
- Oracle下对表建全文索引
- Oracle全文索引总结
- Oracle Text(全文索引)
- Oracle创建全文索引
- Oracle中文全文索引
- oracle全文索引
- 建立Oracle全文索引
- Oracle 全文索引
- Oracle 全文索引
- Oracle全文索引
- Oracle全文索引!
- Oracle text全文索引
- oracle全文索引
- Oracle 全文索引
- Oracle实现全文索引
- 全文索引(oracle text)
- oracle全文索引使用方法
- ORACLE中文全文索引
- Gradle2.0用户指南翻译——第十一章. 使用Gradle命令行
- Spark 入门
- maven jar包
- 遍历出一个文件夹下的所有文件,
- oracle 3个实用统计sql场景
- Oracle下对表建全文索引
- spring拦截关闭session
- 使用maven的tomcat:run进行web项目热部署(通过Maven的Tomcat插件运行Web工程,在pom中添加tomcat插件,使项目能在eclipse中跑起来,但如果部署需安tomcat)
- Python之bin2c
- mariaDB
- 宋宝华:Docker 最初的2小时(Docker从入门到入门)
- WebRTC-Android 源码导读(一):相机采集实现分析
- 报表处理
- reactjs组件之间的传值