2017-05-07 84 views
1

我需要SOME_NUMERIC_PARAM文本字段排序大表:如何在索引組織表上構建Oracle文本索引?

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 Text和索引組織表?

回答

2

"How can I use Oracle Text and Index Organized Table"

你不能。索引組織的表基本上只是一個索引(有一個表對象,但它是存根)。我們不能在索引上創建索引,這只是數據庫體系結構的限制。

但你爲什麼要這樣做呢?與organization index搭建此表沒有任何價值。物聯網的使用情況有限;主要它們對於參考數據查找(通常具有鍵 - 結構結構)是非常有用的:我們總是用鍵查找描述,沒有其他訪問路徑,我們通常使用SQL中的兩列。

帶有CLOB的任何索引似乎都不適合該類用例。您要獨立搜索文本的事實證實了這一點。您需要爲您的CLOB構建常規堆表。然後你可以建立一個文本索引。

我猜你想要結合全文搜索與其他過濾器。如果是這樣,你應該檢查出CTXCAT索引類型。這是一種不同類型的文本索引,它允許我們構建常規列和啓用了自由文本搜索的列的複合索引。所以,你可以運行一個查詢,查找包含單詞「自行車」,其中的數值比一些像這樣的值的文本值:

select from hr.txt_test 
where CATSEARCH(texts, 'bicycle', 'some_numeric_param > 23')> 0; 

CTXCAT指數的另一個優點是,他們是事務性的,因此我們不必維護他們的後臺工作。主要缺點是它們不適合大塊的文本。所以也許他們不適合你的情況。 Find out more


"I need a large table ordered by SOME_NUMERIC_PARAM with text field "

我想你排除了分區(因爲牌的?)。當你在12c上時,Attribute Clustering可能會幫助你。這是「是基於某些列的內容將數據緊密物理接近的表級指令」(from the docs)。但是,只有在通過直接路徑插入操作,數據移動或表創建填充表時,屬性聚類才起作用:正常的DML語句不適用它。


" Again kinda ebay style where people start with something very common like samsung and have few sorting options "

所以關於像eBay,谷歌和可擴展性等諸多圖騰網站的事情是,他們在高速緩存,索引和專用數據結構的投入大量的心血。在很多方面,它們就像數據倉庫一樣,數據結構非常規範化。因此,很多eBay搜索不是從項目描述的全文搜索中過濾結果,而是通過對維度結構進行過濾和匹配:最初甚至不是數據庫表,而是內存緩存。

常見的搜索模式是高速緩存和呈現爲下拉式建議。他們甚至以這種方式處理拼寫錯誤。在eBay搜索框中輸入smasu,您會得到相同的建議搜索,就好像您輸入了samsu即當前所需的三星手機(而不是手提電腦或冰箱)的列表。這是定製的。開箱即用Oracle Text無法實現這一功能。

所以它回來了,你真的想成爲多少像eBay?使用這樣的站點來簡化功能非常簡單,但實現等效功能的任務卻不同。

+0

謝謝。是的,我想將全文搜索與過濾器值進行過濾和排序。類似ebay。目前,我們正在利用我們加入幾桌几預排序mviews並增加了一些計算出的數值。我在想IOT可能會取代mviews。不確定分區tbh。我們的文本字段都是圍繞4K字符,不知道這是否是適合CTXCAT。我們正在向用戶顯示由數百萬組成的預訂數據的第一行。再次,有點易趣的風格,人們從像「三星」這樣非常普通的東西開始,並且有很少的分類選項 – Toolkit