请教关于ORACLE全文检索的.我设置了对本地系统文件进行全文检索.
内容如下:
/*
全文检索(oracle text)
Oracle Text使
Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle
Text是
Oracle9i采用的新名称,在
oracle8/8i中被称为
oracle intermedia text,oracle8以前是
oracle context cartridge。Oracle Text的索引和查找功能并不局限于存储在数据库中的数据。
它可以对存储于文件系统中的文档进行检索和查找,并可检索超过
150种文档类型,包括
Microsoft Word、PDF和
XML。Oracle Text查找功能包括模糊查找、词干查找(搜索
mice
和查找
mouse)、通配符、相近性等查找方式,以及结果分级和关键词突出显示等。你甚至
可以增加一个词典,以查找搭配词,并找出包含该搭配词的文档。
*/现在我把这个段内容分别放到 1.txt , 2.log ,3.doc,4.pdf 中.(就是分别以文本\日志\WORD\PDF文件形式保存)
然后创建索引 create index myindex on mytable1(docs) indextype is ctxsys.context parameters ('datastore COMMON_DIR');然后我用 select Score(1), mytable1.* from mytable1 where contains(docs,'全文%' , 1)>0 来检索 .就能查到 3.doc,4.pdf 两条记录.
而用 select Score(1), mytable1.* from mytable1 where contains(docs,'ora%' , 1)>0 来检索,却能查到所有的 1.txt,2.log,3.doc,4.pdf 四条记录.
请教一下高手。这个是为什么呢? 怎么样设置 才能使用 中文搜索时 把 txt和log中的记录也检索出来呢?
内容如下:
/*
全文检索(oracle text)
Oracle Text使
Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle
Text是
Oracle9i采用的新名称,在
oracle8/8i中被称为
oracle intermedia text,oracle8以前是
oracle context cartridge。Oracle Text的索引和查找功能并不局限于存储在数据库中的数据。
它可以对存储于文件系统中的文档进行检索和查找,并可检索超过
150种文档类型,包括
Microsoft Word、PDF和
XML。Oracle Text查找功能包括模糊查找、词干查找(搜索
mice
和查找
mouse)、通配符、相近性等查找方式,以及结果分级和关键词突出显示等。你甚至
可以增加一个词典,以查找搭配词,并找出包含该搭配词的文档。
*/现在我把这个段内容分别放到 1.txt , 2.log ,3.doc,4.pdf 中.(就是分别以文本\日志\WORD\PDF文件形式保存)
然后创建索引 create index myindex on mytable1(docs) indextype is ctxsys.context parameters ('datastore COMMON_DIR');然后我用 select Score(1), mytable1.* from mytable1 where contains(docs,'全文%' , 1)>0 来检索 .就能查到 3.doc,4.pdf 两条记录.
而用 select Score(1), mytable1.* from mytable1 where contains(docs,'ora%' , 1)>0 来检索,却能查到所有的 1.txt,2.log,3.doc,4.pdf 四条记录.
请教一下高手。这个是为什么呢? 怎么样设置 才能使用 中文搜索时 把 txt和log中的记录也检索出来呢?
解决方案 »
- 我安装完了Oracle11g的客户端,为何在ODBC数据源中没有显示其驱动?
- oracle9i 查询DML记录?
- 求一程序包,用于记录脚本耗时,详细需求如下:
- Oracle10g Client的安装和配置
- ora-06502 數字或值錯誤
- sql中没有order by,是否存在默认排序?
- sqlserver表导入oracle时的问题?
- oracle中这种更新语句怎么写(不拥游标)
- 出错: shared memory realm does not exist!!!
- Oracle BLOB字段 用来存储Excel文件后导出
- 还有1个多小时就是新的一年,在这里先提前祝大家新年快乐,但小弟还有个小小的sql问题问一下大家
- oracle For Linux 中文问题
你要查询文件名还是文件中的内容。我的是oracle10g的是可以的阿、查询中文内容跟中文文件都可以
如果你是后插入的最好删掉索引再重新建一遍
以上面的体系架构图为基础,Oracle Text 索引文档时所使用的主要逻辑步骤如下: (1)数据存储逻辑搜索表的所有行,并读取列中的数据。通常,这只是列数据,但有些数据存储使用列数据作为文档数据的指针。例如,URL_DATASTORE 将列数据作为 URL 使用。 (2)过滤器提取文档数据并将其转换为文本表示方式。存储二进制文档 (如 Word 或 Acrobat 文件) 时需要这样做。过滤器的输出不必是纯文本格式 -- 它可以是 XML 或 HTML 之类的文本格式。 (3)分段器提取过滤器的输出信息,并将其转换为纯文本。包括 XML 和 HTML 在内的不同文本格式有不同的分段器。转换为纯文本涉及检测重要文档段标记、移去不可见的信息和文本重新格式化。 (4)词法分析器提取分段器中的纯文本,并将其拆分为不连续的标记。既存在空白字符分隔语言使用的词法分析器,也存在分段复杂的亚洲语言使用的专门词法分析器。 (5)索引引擎提取词法分析器中的所有标记、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。倒排索引存储标记和含有这些标记的文档。 2 简单的示例 这里先给出一个简单示例说利用Oracle Text实现全文检索的方法与步骤,在后面在进行具体的说明。Orcale9i提供了Oracle Text Manager可以简化许多工作,所有在Oracle Text Manager中完成的工作,都可以在通过PL/SQL来实现。要使用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。Oracle Text为系统管理员提供CTXSYS用户,为应用程序开发人员提供CTXAPP角色。 CTXSYS用户可执行以下任务:启动Oracle Text服务器,执行CTXAPP角色的所有任务。 具有CTXAPP角色的用户可执行以下任务: 创建索引,管理 Oracle Text 数据字典,包括创建和删除首选项,进行Oracle Text 查询,使用 Oracle Text PL/SQL程序包。