`

Oracle 中文分词

 
阅读更多
转自:http://ddtlby.blog.sohu.com/100086259.html

准备工作:

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获取汉字拼音和拼音首字母的功能函数

    除了Oracle内置的工具,还可以借助第三方的Oracle数据库扩展,如Oracle Text,它提供了更高级的文本处理功能,包括中文分词和拼音转换。Oracle Text可以通过索引和查询分析来处理汉字到拼音的转换,适用于大规模的...

    Oracle全文检索技术详解

    1. **中文分词**:由于中文是以词为基本单位,Oracle使用了特定的中文分词器,如jieba分词库,将连续的汉字序列切分成有意义的词语。 2. **词频统计**:中文检索还需要考虑词语的重要性,Oracle会计算每个词在文档中...

    oracle 全文检索实现

    Lucene 自带的词法分析器能够完美地满足英文的分词,但默认只是提供单汉字分词的支持,分词效果不够理想,冗余数据过多,从而掩盖了词句的本意。现在用的最多的第三方分词器有 庖丁解牛中文分词和 IK 中文分词,这 2...

    oracle全文检索的实现

    - **多语言支持**:支持Oracle数据库所支持的大多数语言的全文搜索,包括复杂的亚洲语言,如中文。 - **集成性与易用性**:Oracle Text紧密集成于Oracle数据库,允许开发人员通过标准SQL语句进行文本检索操作,...

    基于Oracle的全文检索技术.pdf

    Oracle Text支持多种分词策略,如最大匹配法、统计分词和混合分词方法,以确保准确地识别和索引中文词汇。 - **文本信息检索技术**:信息检索模型是衡量查询与文档相关性的基础。Oracle Text支持布尔模型、向量空间...

    骂人 脏字 过滤mysql_oracle_sqlserver数据库.txt

    - **分词技术**:结合自然语言处理技术,对输入文本进行分词处理后再与敏感词库对比,提高准确性。 - **缓存机制**:对于频繁访问的敏感词,可以利用缓存减少数据库访问次数。 - **并行处理**:对于大量数据的处理,...

    Oracle数据库全文检索性能研究.pdf

    此外,针对中文文本,选择合适的分词器至关重要,例如使用CHINESE_LEXER,它能更好地识别并分割汉语词汇,提高检索效率。 创建全文索引分为两步:首先,建立数据表,例如创建一个名为DT的表,包含ID、NAME和TXT三个...

    全文检索研究

    中文分词是全文检索的关键步骤,因为中文没有明显的词边界,需要通过特定算法将连续的汉字序列切分成有意义的词汇。 全文检索的应用范围广泛,包括站内图书搜索、网络图书搜索,甚至更广义的信息检索。检索关键字...

    使用机械分词与特征扫描实现对甲骨卜辞的切分.pdf

    【机械分词】是计算机处理中文文本的一种常见技术,主要是通过建立词典和利用统计模型来识别词汇边界。对于甲骨卜辞这种特殊的古文字,机械分词需要结合甲骨文的语法特性以及专门的甲骨文词典进行。例如,Lucene是一...

    window版本elasticsearch+elasticsearch-head-maste+kibana+ik分词器

    - 查询数据:使用Elasticsearch的搜索API或Kibana的Discover功能进行全文搜索,体验IK分词器对中文文本的智能分词效果。 7. **维护与优化**: - 监控Elasticsearch性能,确保磁盘空间充足,定期执行清理和优化...

    基于Oracle地名地址检索技术研究.pdf

    Oracle数据库可以支持中文检索功能,实现对地名地址数据的高效管理和检索。 3. 地名地址检索的关键技术:地名地址检索服务的核心在于能够处理大数据量、复杂类型结构、强空间关系和快速变化的系统。关键技术包括...

    IK分词适用于solr5.31

    这个ik分词已经做了更改。能试用与solr5.3.1版本。

    elasticsearch-analysis-ik-7.0.0.zip

    在Elasticsearch中,Ik分词器是一个广受欢迎的中文分词插件,它提供了丰富的分词策略和高度可配置性。本文将深入探讨elasticsearch-analysis-ik-7.0.0这一版本的特性,以及如何将该插件集成到Elasticsearch系统中。 ...

    Jiayan:甲言,专注于古代汉语(古汉语古文文言文文言)处理的NLP工具包,支持文言词库合成,分词,词性标注,断句和标点。Jiayan是为古典汉语设计的工具包,支持词典构建。 ,标记,POS标记,句子分段和标点符号

    甲言,取“Oracle言”之意,是一种专注于古汉语处理的NLP工具包。目前通用的汉语NLP工具均以现代汉语为核心语料,对古代汉语的处理效果很差(详见)。本项目的初衷,便是辅助古汉语信息处理,帮助有志于挖掘古文化...

    java汉字转拼音(全拼和首字母)

    在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...

    百万商业圈 .NET 开发框架及开发框架API说明书 核心库

    搜索引擎核心处理类库(提供并行中文分词、分布式并行采集器) 增加集成了中科院中文分词和盘古中文分词,并进行了并行改进,大大提高了分词性能 2、另外WebSystem.WebControls.dll 中新增加了100多个各类AJAX控件,...

    es组件jdk.zip

    IK分词器是Elasticsearch中最流行的中文分词插件之一,它提供了强大的中文词汇分析能力,对于处理中文文本搜索和分析至关重要。IK分词器可以自定义词典,支持多种分词模式,提升中文搜索的准确性和效率。 综上所述...

    JAVA日记

    ORACLE Intermedia是ORACLE官方推出的一款用于管理多媒体数据的模块,其不仅支持视频、音频、图片等多媒体文件的统一存储与调用,还内含Oracle Intermedia Text功能,特别适用于多种格式文档的分词索引和跨文本查询...

    ES stack技术分享

    Elasticsearch通过内置的分词器或自定义分词器能够实现中文分词。常用的中文分词插件有IK分词器、HanLP分词器等。这些分词器可以将中文文本切分成单字、词组甚至词义,从而提升中文内容的搜索准确度。 3. ES Stack...

Global site tag (gtag.js) - Google Analytics