“如何使用 Oracle 文本和索引组织表”
你不能。索引组织的表基本上只是一个索引(有一个表对象,但它是存根)。我们不能在索引上建立索引,这只是数据库架构的限制。
但是你为什么要这样做呢?用 . 构建这张表没有任何价值organization index
。物联网的用例有限;它们主要用于参考数据查找之类的事情,它通常具有键含义结构:我们总是通过键查找描述,没有其他访问路径,我们通常在 SQL 中使用这两个列。
任何带有 CLOB 的索引似乎都不适合该类用例。您想要独立搜索文本的事实证实了这一点。您需要为您的 CLOB 构建一个常规堆表。然后你可以建立一个文本索引。
我猜你想将全文搜索与其他过滤器结合起来。如果是这样,您应该检查 CTXCAT 索引类型。这是一种不同类型的文本索引,它允许我们构建常规列和启用自由文本搜索的列的复合索引。因此,您可以运行一个查询来查找包含单词“bicycle”的 TEXTS 值,其中数字值大于某个值,如下所示:
select from hr.txt_test
where CATSEARCH(texts, 'bicycle', 'some_numeric_param > 23')> 0;
CTXCAT 索引的另一个优点是它们是事务性的,因此我们不必使用后台作业来维护它们。主要缺点是它们并不真正适合大块文本。所以也许他们不适合你的情况。了解更多。
“我需要一个由 SOME_NUMERIC_PARAM 订购的带有文本字段的大表”
我想你排除了分区(因为许可?)。当您使用 12c 时,属性聚类可能会为您提供帮助。这是“一个表级指令,它根据某些列的内容在物理上非常接近地聚集数据”(来自文档)。但是,属性聚类仅在通过直接路径插入操作、数据移动或表创建填充表时起作用:普通 DML 语句不应用它。
“又有点像 ebay 风格,人们从一些非常常见的东西开始,比如samsung
很少有排序选项”
因此,像 eBay、Google 和许多其他可扩展性图腾这样的网站的问题在于,它们在缓存、索引和专门的数据结构上投入了大量精力。在许多方面,它们就像数据仓库,具有高度非规范化的数据结构。因此,许多 eBay 搜索过滤结果不是来自对项目描述的全文搜索,而是通过过滤和匹配类似结构的维度:最初甚至不是数据库表,而是内存中的缓存。
常见的搜索模式是缓存并以下拉建议的形式呈现。他们甚至以这种方式处理错别字。在 eBay 搜索框中smasu
输入内容,您将获得与输入内容相同的建议搜索内容,samsu
即当前理想的三星手机列表(而不是笔记本电脑或冰箱)。那是定制的。开箱即用的 Oracle Text 无法做到这一点。
所以它又回到了,你真的想成为 eBay 的样子吗?使用这些网站作为功能的简写很容易,实现等效功能是一项不同的任务。