准备工作:

CREATE   TABLE issues ( 
    ID         NUMBER, 
    summary       VARCHAR(120), 
    description   CLOB, 
    author     VARCHAR(80), 
    ot_version VARCHAR(10) 
);

INSERT INTO issues 
     VALUES (1, 'Jane', 'Text does not make tea', 
             'Oracle Text is unable to make morning tea', 1);

INSERT INTO issues 
     VALUES (2, 'John', 'It comes in the wrong color', 
             'I want to have Text in pink', 1);

INSERT INTO issues 
     VALUES (3, 'Mike', 'I come from china', '所以我讲中文', 1); 
--下面两句话很难解析的 
INSERT INTO issues 
     VALUES (4, 'Mike', 'I come from china', '吉林省长春市的人民', 1);

INSERT INTO issues 
     VALUES (5, 'Mike', 'I come from china', 
             '我们要积极地主动作好计划生育工作', 1);

-- define datastore preference for issues

BEGIN 
   --ctx_ddl.drop_preference ('issue_lexer'); 
   ctx_ddl.set_attribute ('issue_store', 'output_type', 'CLOB'); 
   ctx_ddl.create_preference ('issue_lexer', 'CHINESE_LEXER'); 
END; 
/

-- index issues 没有指定任何lexer 
CREATE INDEX issue_index ON issues(author) INDEXTYPE IS ctxsys.CONTEXT;

--进行查询 
SELECT * 
  FROM issues 
WHERE contains (author, '中文', 1) > 0;

会返回no rows selected。

说明:不使用lexer参数,oracle Text无法对中文进行有效检索。

接下来我们 使用oracle和网上各位仁兄推荐的CHINESE_LEXER看看,执行下列语句: 
DROP   INDEX issue_index;

-- index issues 
CREATE INDEX issue_index ON issues(author) INDEXTYPE IS ctxsys.CONTEXT 
  PARAMETERS ('lexer issue_lexer');

SELECT * 
  FROM issues 
WHERE contains (author, '中文', 1) > 0;

会 返回一条记录。

再执行下列查询语句: 
SELECT * 
  FROM issues 
WHERE contains (author, '作好', 1) > 0;

SELECT * 
  FROM issues 
WHERE contains (author, '吉林', 1) > 0;

都没有任何返回结果。

执行下列语句: 
SELECT * 
  FROM issues 
WHERE contains (author, '中文', 1) > 0;

有一个返回结果。

说明:CHINESE_LEXER对中文分词进行了优化,能够识别大部分中文单 词,但是毕竟有很多单词难以区分。比如说,‘我们要积极地主动作好计划生育工作’被oracle 解释为:“我们要 积极 地主 动作 好  计划生育 工作”;'吉林省长春市的人民'解释为:“吉林省 长春市 的 人民”。不过效率方面自然很高。

再看看 CHINESE_VGRAM_LEXER: 
执行下列语句 
BEGIN 
   ctx_ddl.drop_preference ('issue_lexer'); 
   ctx_ddl.set_attribute ('issue_store', 'output_type', 'CLOB'); 
   ctx_ddl.create_preference ('issue_lexer', 'CHINESE_VGRAM_LEXER'); 
END; 
/

-- index issues 没有指定任何lexer 
CREATE INDEX issue_index ON issues(author) INDEXTYPE IS ctxsys.CONTEXT 
  PARAMETERS ('lexer issue_lexer');

--进行查询 
SELECT * 
  FROM issues 
WHERE contains (author, '中文', 1) > 0;

SELECT * 
  FROM issues 
WHERE contains (author, '作好', 1) > 0;

SELECT * 
  FROM issues 
WHERE contains (author, '吉林', 1) > 0;

SELECT * 
  FROM issues 
WHERE contains (author, '计划生育', 1) > 0;

SELECT * 
  FROM issues 
WHERE contains (author, '地主', 1) > 0;

都 有返回结果。

说明:CHINESE_VGRAM_LEXER使用的保守分词方法,不求有功但求无过。对所有的词都可以查询到。不过效 率方面就有不足了。 
所有的分词结果都可以在表DR$ISSUE_INDEX$I中看到。 
例子中 CHINESE_VGRAM_LEXER会创建39行数据,而CHINESE_LEXER只创建23行数据。 
结 论:oracle Text进行中文搜索必须指定lexer 参数。如果追求效率那么使用CHINESE_LEXER,如果追求准确度那么使用CHINESE_VGRAM_LEXER。

Oracle 中文分词CHINESE_VGRAM_LEXER与CHINESE_LEXER比较相关推荐

  1. oracle 分词函数,Oracle 中文分词

    转自:http://ddtlby.blog.sohu.com/100086259.html 准备工作: CREATE   TABLE issues ( ID         NUMBER, summa ...

  2. oracle创建分词,Oracle 中文分词

    转自:http://ddtlby.blog.sohu.com/100086259.html 准备工作: CREATE   TABLE issues ( ID         NUMBER, summa ...

  3. oracle 分词函数,Oracle 汉语言分词

    当前位置:我的异常网» 数据库 » Oracle 汉语言分词 Oracle 汉语言分词 www.myexceptions.net  网友分享于:2013-09-28  浏览:14次 Oracle 中文 ...

  4. solr5 导入oracle,Solr7使用Oracle数据源导入+中文分词

    oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.2.218:1521:product" u ...

  5. 基于 HanLP 的 ES 中文分词插件

    一.分词插件 1.分词器概念 在 ES 中,分词器的作用是从文本中提取出若干词元(token)来支持索引的存储和搜索,分词器(Analyzer)由一个分解器(Tokenizer).零个或多个词元过滤器 ...

  6. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(一)

    elasticsearch需要的环境搭建 简介: 使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上,并设置JAVA_HOME环境变量 java的jdk ...

  7. php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

    Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

  8. Elasticsearch07:ES中文分词插件(es-ik)安装部署

    一.ES中文分词插件(es-ik) 在中文数据检索场景中,为了提供更好的检索效果,需要在ES中集成中文分词器,因为ES默认是按照英文的分词规则进行分词的,基本上可以认为是单字分词,对中文分词效果不理想 ...

  9. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

最新文章

  1. NXP智能驾驶软件系统
  2. 根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
  3. 基于用例点来度量软件规模并管理进度 之三
  4. Tensorflow 错误总结:NameError: name 'core' is not defined
  5. python词云的简单使用
  6. jQuery使用(八):运动方法
  7. json.hpp参数错误
  8. 阿里云专属数据库,重新定义云数据库新形态
  9. python脚本自动消除安卓版_python脚本中appium的自启动自关闭
  10. Flash游戏开发技术分析(下)
  11. 简单用BT3破解无线网络WEP, WPA密码
  12. 小米路由器r2d_小米路由器二代R2D怎样设置无线中继模式
  13. c语言6月份考试时间,六级几点考试 考试时间明细
  14. android 仿微信demo————注册功能实现(移动端)
  15. 打造高效研发团队 (3) —— 绩效考核篇
  16. 软件设计师刷题与知识点总结 笔记
  17. 计算机组成原理相关话题,“计算机组成原理”教学改革研究
  18. 面试姊妹篇4:常见的Java多线程面试题
  19. I2C的基础概念和框架
  20. 声音四要素:音强、音调、音色和波形包络

热门文章

  1. 积跬步以至千里_《荀子》名句76则:不积跬步,无以至千里;不积小流,无以成江海...
  2. aspose java_Aspose.Cells for Java
  3. mysql怎么模糊查询名字_mysql中模糊查询的四种用法:
  4. ubuntu修改mongodb的数据库储存位置
  5. 51nod1429 巧克力
  6. 4 weekend110的hdfs下载数据源码跟踪铺垫 + hdfs下载数据源码分析-getFileSystem(值得反复推敲和打断点源码)...
  7. Verilog inout 双向口使用和仿真
  8. 【Mac软件推荐】Alfred:Mac下最好的快速启动工具
  9. Eclipse 自动注释的设置
  10. 实习技术员的基本功(四)