2011-12-02 39 views
2

我有一個錯誤,我似乎無法弄清楚。任何人都知道我在這裏做錯了什麼?請假設圖像包含地點,主題,說明和測試在主題或地點或說明中出現多次。另外,我確實將ConText初始化參數TEXT_ENABLE設置爲true。ORA-29908:缺少輔助操作員的主要調用

SELECT 4*SCORE(1) + 2*SCORE(2) + SCORE(3) AS RANK 
FROM images i 
WHERE CONTAINS(i.subject, 'testing', 1)>0 
OR CONTAINS(i.place, 'testing', 2)>0 
OR CONTAINS(i.description, 'testing', 3)>0 
ORDER BY RANK; 
+0

使用@Vincent的腳本下面我無法在11.1.0.6.0或11.2.0.1.0上重現您的錯誤。您使用的是什麼特定版本的Oracle,或者腳本是否錯誤? – Ben

+0

我正在使用DB版本11G –

+0

@PaulKar。 'SELECT * FROM v $ version;'找出你已經安裝的11g的特定版本。 – wweicker

回答

2

我manged通過與周圍另一個查詢當前查詢和拉動ORDER BY RANK到外面查詢來解決問題。像這樣:

SELECT * 
FROM (SELECT 4*SCORE(1) + 2*SCORE(2) + SCORE(3) AS RANK 
     FROM images i 
     WHERE CONTAINS(i.subject, 'testing', 1)>0 
     OR CONTAINS(i.place, 'testing', 2)>0 
     OR CONTAINS(i.description, 'testing', 3)>0) 
ORDER BY RANK; 
1

我無法在10.2.0.4上重現。你的數據庫版本是什麼?

測試腳本:

CREATE TABLE text_data (
    txt1 VARCHAR2(4000), 
    txt2 VARCHAR2(4000), 
    txt3 VARCHAR2(4000) 
); 
INSERT INTO text_data 
    (SELECT text, text, text FROM all_source WHERE ROWNUM <= 1e4); 

CREATE INDEX txt1 ON text_data (txt1) INDEXTYPE IS ctxsys.context; 
CREATE INDEX txt2 ON text_data (txt2) INDEXTYPE IS ctxsys.context; 
CREATE INDEX txt3 ON text_data (txt3) INDEXTYPE IS ctxsys.context; 

SELECT 4 * SCORE(1) + 2 * SCORE(2) + SCORE(3) AS RANK 
    FROM text_data i 
WHERE CONTAINS(i.txt1, 'FUNCTION', 1) > 0 
    OR CONTAINS(i.txt2, 'FUNCTION', 2) > 0 
    OR CONTAINS(i.txt3, 'FUNCTION', 3) > 0 
ORDER BY RANK; 
+0

我使用DB版本11G –