create index idx_ctx_表名_字段列表 on 表名(字段列表) indextype is CTXSYS.CONTEXT ;select * from 表名 where contains(字段名,'查询内容') > 0;
如果你是前后都有%,那么是使用不到索引的。 建议你使用 jxc(GameHeart)楼上的方法,建立Oracle Te xt索引(这是9i的叫法,8i叫interMedia)。这里有个比较: 不使用Oracle Text的文本搜索可能会出现问题。例如,如果你不用Oracle Te xt索引,而要在NAME列搜索单词“rice”,你可能按如下所示使用操作符LIKE或函数INSTR(): SELECT id, name FROM recipes WHERE UPPER(name) LIKE '%RICE%'; SELECT id, name FROM recipes WHERE INSTR(UPPER(name), 'RICE') > 0; UPPER函数的使用,是在忽略大小写的情况下查找所有出现的“rice”所必须的,但会导致name列上的标准Oracle索引(BTREE)被忽略。而且,在name列使用标准索引要求你从被索引的列的开始就要匹配搜索术语。也就是说,要使用标准索引找到示例数据第三行中的“Rice”,查询的谓项必须如下所示: WHERE name LIKE 'Spanish Rice%' 它与搜索“rice”完全不同,然而它阐明了如何为了让Oracle选择一个BT REE 索引而将不得不限制你的搜索。使用上述方法中的一个查找一文本串可能是一冗长的任务。相反,Oracle Text搜索术语“rice”(默认忽略大小写)时由SELECT语句使用Oracle Tex t特殊的CONTAINS操作符来完成。 SELECT id, name FROM recipes WHERE CONTAINS (name, 'rice') > 0; CONTAINS的参数是正在被搜索的列名称,上面例子的Text Query Expression(文本查询表达式)包含了一个术语(“rice”)和一个可选用的第三方参数(在这篇文章联机版的分数查询例子中介绍了可选用参数)。CONTAINS返回一个显示分数的数字,它可以是0到 100之间的任何值。如果一篇文档一点也不能匹配搜索标准,它收到的分数为0,所以谓项WHE RE (name, 'rice') >0将查找与标准相匹配的文档,即使是以最微弱的方式相匹配。参见“ Keeping Score-the Salton Algorithm”,获得关于Oracle Text引擎使用的计分算法方面的更多信息。
indextype is CTXSYS.CONTEXT
;select * from 表名 where contains(字段名,'查询内容') > 0;
建议你使用 jxc(GameHeart)楼上的方法,建立Oracle Te xt索引(这是9i的叫法,8i叫interMedia)。这里有个比较:
不使用Oracle Text的文本搜索可能会出现问题。例如,如果你不用Oracle Te xt索引,而要在NAME列搜索单词“rice”,你可能按如下所示使用操作符LIKE或函数INSTR():
SELECT id, name
FROM recipes
WHERE UPPER(name) LIKE '%RICE%';
SELECT id, name
FROM recipes
WHERE INSTR(UPPER(name), 'RICE') > 0;
UPPER函数的使用,是在忽略大小写的情况下查找所有出现的“rice”所必须的,但会导致name列上的标准Oracle索引(BTREE)被忽略。而且,在name列使用标准索引要求你从被索引的列的开始就要匹配搜索术语。也就是说,要使用标准索引找到示例数据第三行中的“Rice”,查询的谓项必须如下所示:
WHERE name LIKE 'Spanish Rice%'
它与搜索“rice”完全不同,然而它阐明了如何为了让Oracle选择一个BT REE 索引而将不得不限制你的搜索。使用上述方法中的一个查找一文本串可能是一冗长的任务。相反,Oracle Text搜索术语“rice”(默认忽略大小写)时由SELECT语句使用Oracle Tex t特殊的CONTAINS操作符来完成。
SELECT id, name
FROM recipes
WHERE CONTAINS (name, 'rice') > 0;
CONTAINS的参数是正在被搜索的列名称,上面例子的Text Query Expression(文本查询表达式)包含了一个术语(“rice”)和一个可选用的第三方参数(在这篇文章联机版的分数查询例子中介绍了可选用参数)。CONTAINS返回一个显示分数的数字,它可以是0到 100之间的任何值。如果一篇文档一点也不能匹配搜索标准,它收到的分数为0,所以谓项WHE RE (name, 'rice') >0将查找与标准相匹配的文档,即使是以最微弱的方式相匹配。参见“ Keeping Score-the Salton Algorithm”,获得关于Oracle Text引擎使用的计分算法方面的更多信息。