Oracle 10g에서 Oracle Text를 사용하고 있습니다. 나는 다음과 같이 여러 열로 CONTEXT 인덱스를 만들었습니다Oracle Text Stemming이 작동하지 않는 이유는 무엇입니까?
내 테이블입니다
CREATE TABLE WEB_RES
(
"ID" NUMBER(10,0),
"TITLE" VARCHAR2(256 BYTE),
"DESCRIPTION" VARCHAR2(1024 BYTE),
"CONTENT" BLOB,
"CATEGORY" VARCHAR2(64 BYTE),
...
CONSTRAINT "PK_WEB_RES" PRIMARY KEY ("ID")
}
내 취향과 인덱스는 다음과 같습니다
:execute ctx_ddl.create_preference('my_multi', 'MULTI_COLUMN_DATASTORE');
execute ctx_ddl.set_attribute('my_multi', 'columns', 'title, description, category');
execute ctx_ddl.create_preference('my_lexer', 'BASIC_LEXER');
execute ctx_ddl.set_attribute('my_lexer', 'index_stems', '1');
create index myTitleIndex on web_res(title)
indextype is ctxsys.context
parameters ('DATASTORE my_multi lexer my_lexer SYNC(ON COMMIT)');
나는 다음과 같은 내 테이블에 행이
ID Title Description Category
--- ----------- -------------- ------------
1 Superannuation Contributions Splitting Test Test
영어가 제 모국어가 아니지만이 쿼리가 결과를 반환하지 않아야합니까?
SELECT * FROM web_res WHERE CONTAINS(title, '$contribute', 1) > 0;
나는 '$ 기부하기'또는 '$ 승인'을 검색 할 때 '승인'으로 제목을 찾을 수를 검색 할 때 '공헌'로 제목을 찾을 것으로 기대합니다. 이것은 형태소 분석이 아닌가?
편집 : 나는 또한 아래로 Basic_Wordlist을 시도하지만, 여전히 다시 내 쿼리에 대한 행이 없어 :
execute ctx_ddl.create_preference('my_wordlist', 'BASIC_WORDLIST');
execute ctx_ddl.set_attribute('my_wordlist', 'stemmer', 'ENGLISH');
create index myTitleIndex on web_res(title)
indextype is ctxsys.context
parameters ('DATASTORE my_multi wordlist my_wordlist SYNC(ON COMMIT)');
를 반환하기 때문에 , 당신의 문제를 해결하지 못한다면 - 나는 내일 Oracle DB에서 모든 것을 재현해야 할 것입니다 ...) – evenro
나는 이미 성공하지 않고 그것을 시도했습니다. 결과는 같습니다. 그것을 반영하기 위해 내 질문을 업데이트 할 것입니다. – shadi
BASIC_LEXER에서도 시도해 보셨습니까? 실패 했습니까? 서버 구성 문제 등을 좁히고 싶습니다. – evenro