GF23 JAVADOCNX`t@C
	Tv		DESCRIPTION	X(4000)
	e			CONTENTS	CLOB
	`Tv	FORM_SAMPLE	CLOB

GF24 JAVADOC`t@C
	Tv	DESCRIPTION	X(4000)
	e		CONTENTS	CLOB

GF25 JAVADOCNX`t@C
			VALUENAME	X(30)
	Tv		DESCRIPTION	X(4000)
	e			CONTENTS	CLOB
	`Tv	FORM_SAMPLE	CLOB

@̃f[^XgAEvt@X쐬܂B

EXEC CTX_DDL.DROP_PREFERENCE('MCDS_23');

BEGIN
	CTX_DDL.CREATE_PREFERENCE('MCDS_23', 'MULTI_COLUMN_DATASTORE');
	CTX_DDL.SET_ATTRIBUTE('MCDS_23', 'columns', 'DESCRIPTION, CONTENTS, FORM_SAMPLE');
END;

BEGIN
	CTX_DDL.CREATE_PREFERENCE('MCDS_24', 'MULTI_COLUMN_DATASTORE');
	CTX_DDL.SET_ATTRIBUTE('MCDS_24', 'columns', 'DESCRIPTION, CONTENTS');
END;

BEGIN
	CTX_DDL.CREATE_PREFERENCE('MCDS_25', 'MULTI_COLUMN_DATASTORE');
	CTX_DDL.SET_ATTRIBUTE('MCDS_25', 'columns', 'VALUENAME, DESCRIPTION, CONTENTS, FORM_SAMPLE');
END;


A.CfbNX̍쐬B
  CTXSYS.CONTEXT ŁAقǂ́ADATASTORE w肵܂B

  ctx_ddl.create_preference('MY_MULTI','MULTI_COLUMN_DATASTORE');
  ctx_ddl.set_attribute('MY_MULTI', 'COLUMNS','foo,bar');
  ̃f[^XgÁAfoo񂨂bar̓etFb`āAbartB^A
  hLĝ悤ɍ\܂B
	<FOO>
	foo contents
	</FOO>
	<BAR>
	bar filtered contents (probably originally HTML)
	</BAR>


CREATE INDEX GF23_TXT_IDX ON GF23(FORM_SAMPLE)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_23');

CREATE INDEX GF24_TXT_IDX ON GF24(CONTENTS)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_24');

CREATE INDEX GF25_TXT_IDX ON GF25(FORM_SAMPLE)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_25');


DROP INDEX GF23_TXT_IDX;
DROP INDEX GF24_TXT_IDX;
DROP INDEX GF25_TXT_IDX;

C.{pڸǉ܂B
  JAPANESE_LEXER  JAPANESE_VGRAM_LEXER ܂AJAPANESE_LEXER gp܂B
  ́A[hɕϊ邽߂ɁAfBNViQƂ܂B
  g[NŒ蕶Ƃɐ؂o JAPANESE_VGRAM_LEXER ƔrāA
  ^̍̐A⍇Ԃ̒ZkA[hEg[N̐ɂ⍇x̌ Ƃ
  _܂Atɗv鎞Ԃ́AJAPANESE_VGRAM_LEXERgpꍇ蒷Ȃ܂B

BEGIN
	CTX_DDL.CREATE_PREFERENCE('JPN_LX','JAPANESE_LEXER');
END;

DROP INDEX GF70_PATH_IDX;


CREATE INDEX GF23_TXT_IDX ON GF23 (FORM_SAMPLE)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_23 LEXER JPN_LX');

CREATE INDEX GF24_TXT_IDX ON GF24(CONTENTS)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_24 LEXER JPN_LX');

CREATE INDEX GF25_TXT_IDX ON GF25(FORM_SAMPLE)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE MCDS_25 LEXER JPN_LX');


DSp̃g[NQƂłBGF70_PATH_IDX ͂CfbNXw肵܂B
select count(*) from DR$GF23_TXT_IDX$I ;
select count(*) from DR$GF24_TXT_IDX$I ;
select count(*) from DR$GF25_TXT_IDX$I ;
SELECT TOKEN_TEXT FROM DR$GF23_TXT_IDX$I ORDER BY TOKEN_TEXT;


EĂ݂܂B
SELECT * FROM GF23 WHERE CONTAINS (FORM_SAMPLE, 'IN') > 0
	and verno = (select max(verno) from GF23);


SELECT * FROM GF24 WHERE CONTAINS (CONTENTS, 'ftHg') > 0
	and verno = (select max(verno) from GF24);


SELECT * FROM GF25 WHERE CONTAINS (FORM_SAMPLE, 'Reader') > 0
	and verno = (select max(verno) from GF25);

=====================================================
eLXg̓
EXEC CTX_DDL.SYNC_INDEX( 'GF23_TXT_IDX' );

eLXg̃eiX
EXEC CTX_DDL.OPTIMIZE_INDEX( 'GF23_TXT_IDX','FAST' );

폜ĊɌΏە\ɑ݂ĂȂg[N폜
EXEC CTX_DDL.OPTIMIZE_INDEX( 'GF23_TXT_IDX','FULL' );

=====================================================
FSNIPPET
  hLg̗p쐬ɂ́ACTX_DOC.SNIPPETvV[Wgp܂B
  pƂ́A⍇Ƃ̑ÕeLXg܂ރeLXg̒fЁitOgjłB
  ̗ṕA}[NAbvꂽ⍇L[[hÕeLXgƈꏏɖ߂߁A
  tL[[hiKWICjƂĂmĂA[U[͖⍇L[[h𕶖ŕ]ł܂B

SELECT UNIQ FROM GF23 WHERE CONTAINS (FORM_SAMPLE, 'IN') > 0
and verno = (select max(verno) from GF23)
ʁAUNIQ = 43733  SNIPPET ߂B
select CTX_DOC.SNIPPET('GF23_TXT_IDX','43733','IN') from dual

ۂɂ́AvC}L[ JOIN 邱ƂŁAʂ p
oƂł܂B

select CTX_DOC.SNIPPET('GF23_TXT_IDX',UNIQ,'IN')
	from GF23
	WHERE CONTAINS (FORM_SAMPLE, 'IN') > 0
	and verno = (select max(verno) from GF23)


XRA߂ɂ́ASCOREZqw肵܂B
tɕ\΁AXRA̍ɕ\ł܂B

select SCORE(1),CTX_DOC.SNIPPET('GF23_TXT_IDX',UNIQ,'IN')
	from GF23
	WHERE CONTAINS (FORM_SAMPLE, 'IN',1) > 0
	and verno = (select max(verno) from GF23)
	ORDER BY SCORE(1) DESC ;

\iɂ́A⍇ŁAROWNUM g܂B
i荞łASNIPPET \܂B

select SCR,CTX_DOC.SNIPPET('GF23_TXT_IDX',UNIQ,'IN') as TXT
from (
	select SCORE(1) as SCR,UNIQ
		from GF23
		WHERE CONTAINS (FORM_SAMPLE, 'IN',1) > 0
		and verno = (select max(verno) from GF23)
		ORDER BY SCORE(1) DESC
)
where rownum < 11


