例如我输入“三鹿奶粉”
以下是搜索数据库(oracle)的一个字段所得的结果1,三鹿婴儿奶粉
2,三鹿牌婴幼儿奶粉事件滚动报道
3,多省出现“肾结石宝宝” 疑喝三鹿奶粉所致
4,三鹿集团
5,三鹿发现700吨婴幼儿奶粉受三聚氰胺污染
6,国务院有关部门负责人就三鹿牌婴幼儿奶粉重大安全事故的有关情况答记者问请高手告诉我原理,最好给我一个实际可用的例子,或者一些重要的SQL语句,Java语言的相关方法,
类似我们在CSDN提问题时,页面最下边的“相关问题”,我就是要搜索出与输入的一个语句相似的一些
字段出来,不要告诉我用“%三鹿%奶粉%”这样的方法,因为我们在程序里面根本就不懂用如此手动干预
的完美拆分,呵呵,谢谢!

解决方案 »

  1.   

    Oracle 9i全文检索技术Oracle一直致力于全文检索技术的研究,当Oracle9i Rlease2发布之时,Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是Oracle ConText Cartridge。使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能。本文将介绍如何使用Oracle9i的全文检索技术来为自己的应用提供一个优秀的解决方案。 1 Oracle Text的体系架构 下图是Oracle Text的体系架构。    图1 Oracle Text的体系架构
    以上面的体系架构图为基础,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程序包。