GF70  JSP`FbNʃe[u
	t@C		FILENAME	X(60)
	t@CpX	FILEPATH	X(256)

t@CpX ɂ́At@C܂ރtpXɂȂĂ܂B
FILE_DATASTORE gĂ݂܂B

@gpł悤ɁAFILE_ACCESS_ROLE t^܂B
  ł́Apublic ɂĂ܂܂B

isSYS[Uōsj
	connect sys/system -sysdba

EXECUTE CTXSYS.CTX_ADM.SET_PARAMETER('FILE_ACCESS_ROLE','public');

******* {́AROLE ݒ肵āAROLE[U[ɗ^B *******
BEGIN
	CTXSYS.CTX_ADM.SET_PARAMETER('FILE_ACCESS_ROLE','TOPCAT');
END;
*********************************************************************

A-1.FILE_DATASTORE ̃vt@X쐬܂B
  ́ATvIɁAFILEPATH ɁAjspt@C̱ڽpӂāAɲޯ쐬܂B
  FILE_DATASTORE ŁAPATHw肷ƁAt͒Pȃt@Ĉ݂ɂȂApXƌ邱Ƃ͂ł܂B
  t@C̃tH_܂̓fBNgɑ݂ꍇAPATHݒ肹ɁA
  tꂽPATH܂ފSȃt@Cw肷Kv܂B

BEGIN
	CTX_DDL.CREATE_PREFERENCE('F_DS','FILE_DATASTORE');
--	CTX_DDL.SET_ATTRIBUTE('F_DS','PATH','/mydocs');
END;

A-2.CfbNX̍쐬B
  CTXSYS.CONTEXT ŁAقǂ́ADATASTORE w肵܂B
CREATE INDEX GF70_PATH_IDX ON GF70(FILEPATH)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE F_DS');

B.tB^[̉
  jsṕAXMLȂ̂ŁAtB^sȂlɁANULL_FILTER gp܂B
  v[EeLXgAHTML܂XMLhLg̍tɎgp܂B
  WORDEXCEL͂ꍇ́AftHg AUTO_FILTER ō\܂B(܂w肷KvȂ)

DROP INDEX GF70_PATH_IDX;

CREATE INDEX GF70_PATH_IDX ON GF70(FILEPATH)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE F_DS FILTER CTXSYS.NULL_FILTER');

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 GF70_PATH_IDX ON GF70(FILEPATH)
	INDEXTYPE IS CTXSYS.CONTEXT
	PARAMETERS ('DATASTORE F_DS FILTER CTXSYS.NULL_FILTER LEXER JPN_LX');


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


EĂ݂܂B
SELECT * FROM GF70 WHERE CONTAINS (FILEPATH, 'upload') > 0;


SELECT * FROM GF70 WHERE CONTAINS (FILEPATH, 'LEE & UTSUNOMIYA & MURAKAMI & ') > 0;


SELECT * FROM GF70 WHERE CONTAINS (FILEPATH, 'L') > 0;

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

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

폜ĊɌΏە\ɑ݂ĂȂg[N폜
EXEC CTX_DDL.OPTIMIZE_INDEX( 'GF70_PATH_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

ʏ́A⍇̌ŏhLg肵Ăgp

SELECT UNIQ FROM GF70 WHERE CONTAINS (FILEPATH, 'L') > 0;
ʁAUNIQ = 190726  SNIPPET ߂B
select CTX_DOC.SNIPPET('GF70_PATH_IDX','190726','L') from dual

ۂɂ́AvC}L[ JOIN 邱ƂŁAʂ p
oƂł܂Aʂ̕@lׂH

select CTX_DOC.SNIPPET('GF70_PATH_IDX',UNIQ,'L')
	from GF70
	WHERE CONTAINS (FILEPATH, 'L') > 0;


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

select SCORE(1),CTX_DOC.SNIPPET('GF70_PATH_IDX',UNIQ,'L')
	from GF70
	WHERE CONTAINS (FILEPATH, 'L',1) > 0
	ORDER BY SCORE(1) DESC ;


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

select SCR,CTX_DOC.SNIPPET('GF70_PATH_IDX',UNIQ,'L') as TXT
from (
	select SCORE(1) as SCR,UNIQ
		from GF70
		WHERE CONTAINS (FILEPATH, 'L',1) > 0
		ORDER BY SCORE(1) DESC
)
where rownum < 11

