如何在索引组织表上构建Oracle文本索引?

如何在索引组织表上构建Oracle文本索引?,oracle,plsql,oracle12c,oracle-text,Oracle,Plsql,Oracle12c,Oracle Text,我需要一个大表,按一些数值参数和文本字段排序: CREATE TABLE HR.IOT_TEST ( ID VARCHAR2(30 CHAR), SOME_NUMERIC_PARAM NUMBER, TEXTS CLOB, CONSTRAINT PK_IOT PRIMARY KEY (ID, SOME_NUMERIC_PARAM) ENABLE ) ORGANIZATION INDEX; 我想在该CLOB上建立一个文本搜索索引: CREATE INDEX IOT_TEST_IN

我需要一个大表,按
一些数值参数
和文本字段排序:

CREATE TABLE HR.IOT_TEST
(
  ID VARCHAR2(30 CHAR),
  SOME_NUMERIC_PARAM NUMBER,
  TEXTS CLOB,
  CONSTRAINT PK_IOT PRIMARY KEY (ID, SOME_NUMERIC_PARAM) ENABLE
)
ORGANIZATION INDEX;
我想在该CLOB上建立一个文本搜索索引:

CREATE INDEX IOT_TEST_IND ON HR.IOT_TEST
(
  TEXTS
)
INDEXTYPE IS CTXSYS.CONTEXT; 
但我得到了这个错误:

Table HR.IOT_TEST created.

SQL Error: ORA-29958: fatal error occurred in the execution of ODCIINDEXCREATE routine
ORA-29960: line 1, 
DRG-11303: secondary indexes are not supported by this indextype
我错过了什么?如何使用Oracle文本和索引组织表

“如何使用Oracle文本和索引组织表”

你不能。索引组织的表基本上只是一个索引(有一个表对象,但它是存根)。我们不能在索引上构建索引,这只是数据库体系结构的一个限制

但你为什么要这么做?使用
组织索引构建此表没有任何价值。物联网的使用案例有限;它们主要用于参考数据查找,这通常有一个键含义结构:我们总是按键查找描述,没有其他访问路径,我们通常在SQL中同时使用这两列

任何带有CLOB的索引似乎都不适合该类用例。您希望独立搜索文本的事实证实了这一点。您需要为CLOB构建一个常规堆表。然后你可以建立一个文本索引

我猜您希望将全文搜索与其他筛选器相结合。如果是这样,您应该检查CTXCAT索引类型。这是一种不同的文本索引,它允许我们构建一个由常规列和支持自由文本搜索的列组成的复合索引。因此,您可以运行一个查询,以查找包含单词“bicycle”的文本值,其中数值大于以下值:

select from hr.txt_test 
where CATSEARCH(texts, 'bicycle', 'some_numeric_param > 23')> 0; 
CTXCAT索引的另一个优点是它们是事务性的,因此我们不必在后台作业中维护它们。主要的缺点是它们并不真正适合大块的文本。所以也许他们不适合你的情况


“我需要一个大表,由带有文本字段的某个数值参数排序”

我想您排除了分区(因为许可证?)。当您在12c上时,属性聚类可能会对您有所帮助。这是“一个表级指令,它根据某些列的内容在物理上非常接近的位置对数据进行聚类”()。但是,属性集群仅在通过直接路径插入操作、数据移动或表创建填充表时有效:普通DML语句不应用它


“又是一种易趣风格,人们从一些非常常见的东西开始,比如三星
,几乎没有排序选项”

因此,eBay、Google和许多其他可扩展性图腾网站的特点是,它们在缓存、索引和专用数据结构方面投入了大量精力。在许多方面,它们与数据仓库相似,具有高度非规范化的数据结构。因此,许多eBay搜索并不是通过对商品描述的全文搜索来过滤结果,而是通过对类似维度的结构进行过滤和匹配:最初甚至不是数据库表,而是内存缓存

常见的搜索模式是缓存,并作为下拉建议显示。他们甚至用这种方式处理打字错误。在易趣搜索框中键入
smasu
,您将获得与键入
samsu
相同的建议搜索,即当前理想的三星手机列表(而不是笔记本电脑或冰箱)。那是定制的。用Oracle文本开箱即用,您将无法实现这一点


所以回到这里,你到底想成为一个多像易趣的人?使用此类网站作为功能的简写很容易,实现等效功能的任务则不同

多谢各位。是的,我想将全文搜索与筛选和按筛选值排序相结合。类似于ebay。我们目前正在使用几个预先排序的mview,其中我们连接了几个表并添加了一些计算出的数值。我在想物联网可能会取代mviews。不确定分区tbh。我们的文本字段大约是4k字符,不确定是否适合CTXCAT。我们正在向用户显示由数百万个数据组成的预排序数据的第一行。又是一种易趣风格,人们从一些非常常见的东西开始,比如三星(samsung),几乎没有排序选项