2011-12-02 2 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에서 오류를 재현 할 수 없습니다. 오라클의 특정 버전을 사용하고 있습니까? 아니면 스크립트가 잘못 되었습니까? – Ben

+0

DB 버전 11G –

+0

@PaulKar를 사용하고 있습니다. 'SELECT * FROM v $ version;'을 사용하면 설치 한 특정 버전의 11g를 찾을 수 있습니다. – wweicker

답변

2

나는 다른 쿼리와 현재 쿼리를 주변과 외부 쿼리에 RANK에 의해 순서를 당겨 문제를 해결하기 위해 manged했던. 마찬가지로 :

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에서는 재생할 수 없습니다. DB 버전은 무엇입니까?

테스트 스크립트는 :

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를 사용하고 있습니다. –

관련 문제