oracle text 的问题

zn85600301 2010-09-21 04:09:15

BEGIN
ctx_ddl.create_preference ('my_datastore_prefs', 'FILE_DATASTORE');
ctx_ddl.set_attribute ('my_datastore_prefs', 'path', 'd:\TEMP');
END;

begin
ctx_ddl.create_preference('cs_filter', 'CHARSET_FILTER');
ctx_ddl.set_attribute('cs_filter', 'charset', 'UTF8');
end;

BEGIN
ctx_ddl.create_preference ('my_lexer', 'chinese_lexer');
END;


BEGIN
ctx_ddl.create_preference ('my_chinese_lexer', 'CHINESE_VGRAM_LEXER');
END;

CREATE TABLE mydocs( id NUMBER PRIMARY KEY, title VARCHAR2(255), thefile
VARCHAR2(255) );

CREATE INDEX mydocs_text_index ON mydocs(thefile) INDEXTYPE IS ctxsys.context
PARAMETERS('datastore my_datastore_prefs filter cs_filter Lexer my_lexer');

SELECT id,title,thefile
FROM mydocs m
WHERE contains( thefile, '俄罗斯' ) > 0;


通过 oracle text 读取服务器本地文件并进行检索,但是这里contains只是判断‘俄罗斯’是否出现过,可否能统计它的出现频率呢?
...全文
92 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn85600301 2010-10-16
  • 打赏
  • 举报
回复
oracle text还是不能不能满足 要求 该用Lucene了
zcy9979420 2010-09-27
  • 打赏
  • 举报
回复
帮忙顶一下
zn85600301 2010-09-27
  • 打赏
  • 举报
回复
ctx_ddl.create_preference ('my_datastore_prefs', 'FILE_DATASTORE');
ctx_ddl.set_attribute ('my_datastore_prefs', 'path', 'd:\TEMP');
如果我在插入数据时
INSERT INTO test( id, title, thefile ) VALUES( 1, 'Document1', '/file/test1.txt');
加上了相对路径后就查询不到
但是若在d:\TEMP,即配置的根路径也添加一个test1.txt 就可以建立索引
所以猜想,oracle text先根据索引项数据查找文件,若没有找到再去指定的根路径再找一次
zn85600301 2010-09-26
  • 打赏
  • 举报
回复
begin

ctx_ddl.create_preference ('my_datastore_prefs', 'FILE_DATASTORE');
ctx_ddl.set_attribute ('my_datastore_prefs', 'path', 'd:\TEMP');

ctx_ddl.create_preference('cs_filter', 'CHARSET_FILTER');
ctx_ddl.set_attribute('cs_filter', 'charset', 'UTF8');

CTX_DDL.CREATE_PREFERENCE('TEST_FILE_ENGLISH', 'BASIC_LEXER');

CTX_DDL.SET_ATTRIBUTE('TEST_FILE_ENGLISH', 'MIXED_CASE', 'YES');

ctx_ddl.create_preference ('TEST_FILE_CHINESE', 'CHINESE_VGRAM_LEXER');

CTX_DDL.CREATE_PREFERENCE('TEST_FILE_MULTI_LEXER', 'MULTI_LEXER');

CTX_DDL.ADD_SUB_LEXER('TEST_FILE_MULTI_LEXER', 'DEFAULT', 'TEST_ENGLISH');

CTX_DDL.ADD_SUB_LEXER('TEST_FILE_MULTI_LEXER', 'SIMPLIFIED CHINESE', 'TEST_FILE_CHINESE', 'CHINESE');
end;

CREATE TABLE test( id NUMBER PRIMARY KEY, title VARCHAR2(255), thefile
VARCHAR2(255) );

INSERT INTO test( id, title, thefile ) VALUES( 1, 'Document1', 'test1.txt');

drop index test_text_index
CREATE INDEX test_text_index ON test(thefile) INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('datastore my_datastore_prefs filter cs_filter LEXER TEST_FILE_MULTI_LEXER LANGUAGE COLUMN thefile');

若 test1.txt 文件 如下
中国人民银行西安分行
UPDATE
commitedit
9595959775
执行后建立的索引数据表 DR$TEST_TEXT_INDEX$I 里面的索引数据也为
中国人民银行西安分行
UPDATE
commitedit
9595959775

为什么 中文的索引没有拆开建立 而且 对英文的查询不区分大小写 ?请大家指教····
numb09 2010-09-23
  • 打赏
  • 举报
回复
zn85600301 2010-09-23
  • 打赏
  • 举报
回复
看来只能自己顶了
zn85600301 2010-09-22
  • 打赏
  • 举报
回复
oracle text 果然这么冷僻
itpub上也没人理··
zn85600301 2010-09-21
  • 打赏
  • 举报
回复
大家来捧个场吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧