转自: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 Text,它提供了更高级的文本处理功能,包括中文分词和拼音转换。Oracle Text可以通过索引和查询分析来处理汉字到拼音的转换,适用于大规模的...
1. **中文分词**:由于中文是以词为基本单位,Oracle使用了特定的中文分词器,如jieba分词库,将连续的汉字序列切分成有意义的词语。 2. **词频统计**:中文检索还需要考虑词语的重要性,Oracle会计算每个词在文档中...
Lucene 自带的词法分析器能够完美地满足英文的分词,但默认只是提供单汉字分词的支持,分词效果不够理想,冗余数据过多,从而掩盖了词句的本意。现在用的最多的第三方分词器有 庖丁解牛中文分词和 IK 中文分词,这 2...
- **多语言支持**:支持Oracle数据库所支持的大多数语言的全文搜索,包括复杂的亚洲语言,如中文。 - **集成性与易用性**:Oracle Text紧密集成于Oracle数据库,允许开发人员通过标准SQL语句进行文本检索操作,...
Oracle Text支持多种分词策略,如最大匹配法、统计分词和混合分词方法,以确保准确地识别和索引中文词汇。 - **文本信息检索技术**:信息检索模型是衡量查询与文档相关性的基础。Oracle Text支持布尔模型、向量空间...
- **分词技术**:结合自然语言处理技术,对输入文本进行分词处理后再与敏感词库对比,提高准确性。 - **缓存机制**:对于频繁访问的敏感词,可以利用缓存减少数据库访问次数。 - **并行处理**:对于大量数据的处理,...
此外,针对中文文本,选择合适的分词器至关重要,例如使用CHINESE_LEXER,它能更好地识别并分割汉语词汇,提高检索效率。 创建全文索引分为两步:首先,建立数据表,例如创建一个名为DT的表,包含ID、NAME和TXT三个...
中文分词是全文检索的关键步骤,因为中文没有明显的词边界,需要通过特定算法将连续的汉字序列切分成有意义的词汇。 全文检索的应用范围广泛,包括站内图书搜索、网络图书搜索,甚至更广义的信息检索。检索关键字...
【机械分词】是计算机处理中文文本的一种常见技术,主要是通过建立词典和利用统计模型来识别词汇边界。对于甲骨卜辞这种特殊的古文字,机械分词需要结合甲骨文的语法特性以及专门的甲骨文词典进行。例如,Lucene是一...
- 查询数据:使用Elasticsearch的搜索API或Kibana的Discover功能进行全文搜索,体验IK分词器对中文文本的智能分词效果。 7. **维护与优化**: - 监控Elasticsearch性能,确保磁盘空间充足,定期执行清理和优化...
Oracle数据库可以支持中文检索功能,实现对地名地址数据的高效管理和检索。 3. 地名地址检索的关键技术:地名地址检索服务的核心在于能够处理大数据量、复杂类型结构、强空间关系和快速变化的系统。关键技术包括...
这个ik分词已经做了更改。能试用与solr5.3.1版本。
在Elasticsearch中,Ik分词器是一个广受欢迎的中文分词插件,它提供了丰富的分词策略和高度可配置性。本文将深入探讨elasticsearch-analysis-ik-7.0.0这一版本的特性,以及如何将该插件集成到Elasticsearch系统中。 ...
甲言,取“Oracle言”之意,是一种专注于古汉语处理的NLP工具包。目前通用的汉语NLP工具均以现代汉语为核心语料,对古代汉语的处理效果很差(详见)。本项目的初衷,便是辅助古汉语信息处理,帮助有志于挖掘古文化...
在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...
搜索引擎核心处理类库(提供并行中文分词、分布式并行采集器) 增加集成了中科院中文分词和盘古中文分词,并进行了并行改进,大大提高了分词性能 2、另外WebSystem.WebControls.dll 中新增加了100多个各类AJAX控件,...
IK分词器是Elasticsearch中最流行的中文分词插件之一,它提供了强大的中文词汇分析能力,对于处理中文文本搜索和分析至关重要。IK分词器可以自定义词典,支持多种分词模式,提升中文搜索的准确性和效率。 综上所述...
ORACLE Intermedia是ORACLE官方推出的一款用于管理多媒体数据的模块,其不仅支持视频、音频、图片等多媒体文件的统一存储与调用,还内含Oracle Intermedia Text功能,特别适用于多种格式文档的分词索引和跨文本查询...
Elasticsearch通过内置的分词器或自定义分词器能够实现中文分词。常用的中文分词插件有IK分词器、HanLP分词器等。这些分词器可以将中文文本切分成单字、词组甚至词义,从而提升中文内容的搜索准确度。 3. ES Stack...