Ò»¡¢ÀúÊ·±³¾°
OracleÊý¾Ý¿âµÄÈ«ÎļìË÷¼¼ÊõÒѾ·Ç³£ÍêÃÀ£¬Oracle TextʹOracle9i¾ß±¸ÁËÇ¿´óµÄÎı¾¼ìË÷ÄÜÁ¦ºÍÖÇÄÜ»¯µÄÎı¾¹ÜÀíÄÜÁ¦¡£Oracle TextÊÇOracle9i²ÉÓõÄÐÂÃû³Æ£¬ÔÚOracle8/8iÖÐËü±»³Æ×÷Oracle interMedia Text£¬ÔÚOracle8ÒÔǰËüµÄÃû³ÆÊÇOracle ConText Cartridge¡£
¶þ¡¢Oracle Text Ë÷ÒýÎĵµÊ±ËùʹÓõÄÖ÷ÒªÂß¼²½ÖèÈçÏ£º
(1) Êý¾Ý´æ´¢Âß¼ËÑË÷±íµÄËùÓÐÐУ¬²¢¶ÁÈ¡ÁÐÖеÄÊý¾Ý¡£Í¨³££¬ÕâÖ»ÊÇÁÐÊý¾Ý£¬µ«ÓÐЩÊý¾Ý´æ´¢Ê¹ÓÃÁÐÊý¾Ý×÷ΪÎĵµÊý¾ÝµÄÖ¸Õë¡£
(2) ¹ýÂËÆ÷ÌáÈ¡ÎĵµÊý¾Ý²¢½«Æäת»»ÎªÎı¾±íʾ·½Ê½¡£´æ´¢¶þ½øÖÆÎĵµ (Èç Word »ò Acrobat Îļþ) ʱÐèÒªÕâÑù×ö¡£¹ýÂËÆ÷µÄÊä³ö²»±ØÊÇ´¿Îı¾¸ñʽ -- Ëü¿ÉÒÔÊÇ XML »ò HTML Ö®ÀàµÄÎı¾¸ñʽ¡£
(3) ·Ö¶ÎÆ÷ÌáÈ¡¹ýÂËÆ÷µÄÊä³öÐÅÏ¢£¬²¢½«Æäת»»Îª´¿Îı¾¡£°üÀ¨ XML ºÍ HTML ÔÚÄڵIJ»Í¬Îı¾¸ñʽÓв»Í¬µÄ·Ö¶ÎÆ÷¡£×ª»»Îª´¿Îı¾Éæ¼°¼ì²âÖØÒªÎĵµ¶Î±ê¼Ç¡¢ÒÆÈ¥²»¿É¼ûµÄÐÅÏ¢ºÍÎı¾ÖØÐ¸ñʽ»¯¡£
(4) ´Ê·¨·ÖÎöÆ÷ÌáÈ¡·Ö¶ÎÆ÷ÖеĴ¿Îı¾£¬²¢½«Æä²ð·ÖΪ²»Á¬ÐøµÄ±ê¼Ç¡£¼È´æÔÚ¿Õ°××Ö·û·Ö¸ôÓïÑÔʹÓõĴʷ¨·ÖÎöÆ÷£¬Ò²´æÔڷֶθ´ÔÓµÄÑÇÖÞÓïÑÔʹÓõÄרÃÅ´Ê·¨·ÖÎöÆ÷¡£
(5) Ë÷ÒýÒýÇæÌáÈ¡´Ê·¨·ÖÎöÆ÷ÖеÄËùÓбê¼Ç¡¢Îĵµ¶ÎÔÚ·Ö¶ÎÆ÷ÖÐµÄÆ«ÒÆÁ¿ÒÔ¼°±»³ÆÎª·ÇË÷Òý×ֵĵÍÐÅÏ¢º¬Á¿×ÖÁÐ±í£¬²¢¹¹½¨·´ÏòË÷Òý¡£µ¹ÅÅË÷Òý´æ´¢±ê¼ÇºÍº¬ÓÐÕâЩ±ê¼ÇµÄÎĵµ¡£
Èý¡¢ÐèÒªµÄȨÏÞ
ҪʹÓÃOracle Text£¬±ØÐë¾ßÓÐCTXAPP½ÇÉ«»òÕßÊÇCTXSYSÓû§¡£Oracle TextΪϵͳ¹ÜÀíÔ±ÌṩCTXSYSÓû§£¬ÎªÓ¦ÓóÌÐò¿ª·¢ÈËÔ±ÌṩCTXAPP½ÇÉ«¡£¾ßÓÐCTXAPP½ÇÉ«µÄÓû§¿ÉÖ´ÐÐÒÔÏÂÈÎÎñ£º´´½¨Ë÷Òý£¬¹ÜÀí Oracle Text Êý¾Ý×ֵ䣬°üÀ¨´´½¨ºÍɾ³ýÊ×Ñ¡Ï½øÐÐOracle Text ²éѯ£¬Ê¹Óà Oracle Text PL/SQL³ÌÐò°ü¡£
ËÄ¡¢¾ßÌåµÄʵÏÖ
Îı¾×°ÈëÎı¾Áк󣬾ͿÉÒÔ´´½¨Oracle TextË÷Òý¡£ÎĵµÒÔÐí¶à²»Í¬·½°¸¡¢¸ñʽºÍÓïÑÔ´æ´¢¡£Òò´Ë£¬Ã¿¸ö Oracle Text Ë÷ÒýÓÐÐí¶àÐèÒªÉèÖõÄÑ¡ÏÒÔÕë¶ÔÌØ¶¨Çé¿öÅäÖÃË÷Òý¡£´´½¨Ë÷Òýʱ£¬Oracle Text¿ÉʹÓÃÈô¸É¸öĬÈÏÖµ£¬µ«ÔÚ´ó¶àÊýÇé¿öÏÂÒªÇóÓû§Í¨¹ýÖ¸¶¨Ê×Ñ¡ÏîÀ´ÅäÖÃË÷Òý¡£
ÿ¸öË÷ÒýµÄÐí¶àÑ¡Ïî×é³É¹¦ÄÜ×飬³ÆÎª"Àà"£¬Ã¿¸öÀ༯ÖÐÌåÏÖÅäÖõÄijһ·½Ã棬¿ÉÒÔÈÏΪÕâЩÀà¾ÍÊÇÓëÎĵµÊý¾Ý¿âÓйصÄһЩÎÊÌâ¡£ÀýÈ磺Êý¾Ý´æ´¢¡¢¹ýÂËÆ÷¡¢´Ê·¨·ÖÎöÆ÷¡¢Ïà¹Ø´Ê±í¡¢´æ´¢µÈ¡£
ÿ¸öÀà¾ßÓÐÐí¶àÔ¤¶¨ÒåµÄÐÐΪ£¬³ÆÖ®Îª¶ÔÏó¡£Ã¿¸ö¶ÔÏóÊÇÀàÎÊÌâ¿ÉÄܾßÓеĴ𰸣¬²¢ÇÒ´ó¶àÊý¶ÔÏó¶¼°üº¬ÓÐÊôÐÔ¡£Í¨¹ýÊôÐÔÀ´¶¨ÖƶÔÏ󣬴ӶøÊ¹¶ÔË÷ÒýµÄÅäÖøü¼Ó¶à±äÒÔÊÊÓ¦ÓÚ²»Í¬µÄÓ¦Óá£
£¨1£©´æ´¢£¨Storage£©Àà
´æ´¢ÀàÖ¸¶¨¹¹³ÉOracle TextË÷ÒýµÄÊý¾Ý¿â±íºÍË÷ÒýµÄ±í¿Õ¼ä²ÎÊýºÍ´´½¨²ÎÊý¡£Ëü½öÓÐÒ»¸ö»ù±¾¶ÔÏó£ºBASIC_STORAGE£¬ÆäÊôÐÔ°üÀ¨£ºI_Index_Clause¡¢I_Table_Clause¡¢K_Table_Clause¡¢N_Table_Clause¡¢P_Table_Clause¡¢R_Table_Clause¡£
£¨2£©Êý¾Ý´æ´¢£¨Datastore£©Àà
Êý¾Ý´æ´¢£º¹ØÓÚÁÐÖд洢Îı¾µÄλÖÃºÍÆäËûÐÅÏ¢¡£Ä¬ÈÏÇé¿öÏ£¬Îı¾Ö±½Ó´æ´¢µ½ÁÐÖУ¬±íÖеÄÿÐж¼±íʾһ¸öµ¥¶ÀµÄÍêÕûÎĵµ¡£ÆäËûÊý¾Ý´æ´¢Î»ÖðüÀ¨´æ´¢ÔÚµ¥¶ÀÎļþÖлòÒÔÆä URL ±êʶµÄ Web Ò³ÉÏ¡£Æß¸ö»ù±¾¶ÔÏó°üÀ¨£ºDefault_Datastore¡¢Detail_Datastore¡¢Direct_Datastore¡¢File_Datastore¡¢Multi_Column_Datastore ¡¢URL_Datastore¡¢User_Datastore¡£
£¨3£©Îĵµ¶Î×飨Section Group£©Àà
Îĵµ¶Î×éÊÇÓÃÓÚÖ¸¶¨Ò»×éÎĵµ¶ÎµÄ¶ÔÏó¡£±ØÐëÏȶ¨ÒåÎĵµ¶Î£¬È»ºó²ÅÄÜʹÓÃË÷Òýͨ¹ý WITHIN ÔËËã·ûÔÚÎĵµ¶ÎÄÚ½øÐвéѯ¡£Îĵµ¶Î¶¨ÒåΪÎĵµ¶Î×éµÄÒ»²¿·Ö¡£°üº¬Æß¸ö»ù±¾¶ÔÏó£ºAUTO_SECTION_GROUP¡¢BASIC_SECTION_GROUP¡¢HTML_SECTION_GROUP¡¢NEWS_SECTION_GROUP¡¢NULL_SECTION_GROUP¡¢XML_SECTION_GROUP¡¢PATH_SECTION_GROUP¡£
£¨4£©Ïà¹Ø´Ê±í£¨Wordlist£©Àà
Ïà¹Ø´Ê±í±êʶÓÃÓÚË÷ÒýµÄ´Ê¸ÉºÍÄ£ºýÆ¥Åä²éѯѡÏîµÄÓïÑÔ£¬Ö»ÓÐÒ»¸ö»ù±¾¶ÔÏóBASIC_WORDLIST£¬ÆäÊôÐÔÓУºFuzzy_Match¡¢Fuzzy_Numresults¡¢Fuzzy_Score¡¢Stemmer¡¢Substring_Index¡¢Wildcard_Maxterms¡¢Prefix_Index¡¢Prefix_Max_Length¡¢Prefix_Min_Length¡£
£¨5£©Ë÷Òý¼¯£¨Index Set£©
Ë÷Òý¼¯ÊÇÒ»¸ö»ò¶à¸öOracle Ë÷Òý (²»ÊÇOracle TextË÷Òý) µÄ¼¯ºÏ£¬ÓÃÓÚ´´½¨ CTXCATÀàÐ͵ÄOracle TextË÷Òý£¬Ö»ÓÐÒ»¸ö»ù±¾¶ÔÏóBASIC_INDEX_SET¡£
£¨6£©´Ê·¨·ÖÎöÆ÷£¨Lexer£©Àà
´Ê·¨·ÖÎöÆ÷Àà±êʶÎı¾Ê¹ÓõÄÓïÑÔ£¬»¹È·¶¨ÔÚÎı¾ÖÐÈçºÎ±êʶ±ê¼Ç¡£Ä¬ÈϵĴʷ¨·ÖÎöÆ÷ÊÇÓ¢Óï»òÆäËûÎ÷Å·ÓïÑÔ£¬Óÿոñ¡¢±ê×¼±êµãºÍ·Ç×ÖĸÊý×Ö×Ö·û±êʶ±ê¼Ç£¬Í¬Ê±½ûÓôóСд¡£°üº¬8¸ö»ù±¾¶ÔÏó£ºBASIC_LEXER¡¢CHINESE_LEXER¡¢CHINESE_VGRAM_LEXER¡¢JAPANESE_LEXER¡¢JAPANESE_VGRAM_LEXER¡¢KOREAN_LEXER¡¢KOREAN__MORPH_ LEXER¡¢MULTI_LEXER¡£
£¨7£©¹ýÂËÆ÷£¨Filter£©Àà
¹ýÂËÆ÷È·¶¨ÈçºÎ¹ýÂËÎı¾ÒÔ½¨Á¢Ë÷Òý¡£¿ÉÒÔʹÓùýÂËÆ÷¶ÔÎÄ×Ö´¦ÀíÆ÷´¦ÀíµÄÎĵµ¡¢¸ñʽ»¯µÄÎĵµ¡¢´¿Îı¾ºÍ HTML Îĵµ½¨Á¢Ë÷Òý£¬°üÀ¨5¸ö»ù±¾¶ÔÏó£ºCHARSET_FILTER¡¢INSO_FILTER INSO¡¢NULL_FILTER¡¢PROCEDURE_FILTER¡¢USER_FILTER¡£
£¨8£©·ÇË÷Òý×Ö±í£¨Stoplist£©Àà
·ÇË÷Òý×Ö±íÀàÊÇÓÃÒÔÖ¸¶¨Ò»×é²»±àÈëË÷ÒýµÄµ¥´Ê (³ÆÎª·ÇË÷Òý×Ö)¡£ÓÐÁ½¸ö»ù±¾¶ÔÏó£ºBASIC_STOPLIST (Ò»ÖÖÓïÑÔÖеÄËùÓзÇË÷Òý×Ö) ¡¢ MULTI_STOPLIST (°üº¬¶àÖÖÓïÑÔÖеķÇË÷Òý×ֵĶàÓïÑÔ·ÇË÷Òý×Ö±í)¡£
¾ßÌå²Ù×÷ʵ¼ù
1¡¢ ´´½¨´Ê·¨·ÖÎöÆ÷¼°Ïà¹Ø´Ê±í
Begin-- ¶¨ÒåÒ»¸ö´Ê·¨·ÖÎöÆ÷
ctx_ddl.drop_preference('cnlex');
ctx_ddl.create_preference('cnlex','CHINESE_LEXER'); --Õë¶ÔÖÐÎÄ
-- ¶¨ÒåÒ»¸öÏà¹Ø´Ê±í
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');
ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);
ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);
ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');
end;
// ÉÏÃæµÄÓï¾äÖУ¬Èç¹ûÊÇÕë¶ÔÓ¢ÓïÓïÖÖÔò¿ÉÒÔ²ÉÓÃÏÂÃæµÄÓï¾äÀ´¶¨Òå´Ê·¨·ÖÎöÆ÷
ctx_ddl.create_preference('mylex','BASIC_LEXER');
ctx_ddl.set_attribute('mylex','printjoins','_-');
2¡¢ ÔÚÐèÒª´´½¨È«ÎÄË÷ÒýµÄ±íÖд´½¨Ë÷Òý£¨Ë÷ÒýÀàÐͱØÐëÊÇ ctxsys.context£¬¼´Ó¦ÓÃÉÏÏÂÎÄË÷Òý£©
create index idx_person_desc on personinfo(persondesc)
indextype is ctxsys.context
parameters (
'DATASTORE CTXSYS.DIRECT_DATASTORE FILTER
CTXSYS.NULL_FILTER LEXER cnlex WORDLIST mywordlist');
-- Çë×¢Òâ´Ë´¦²ÉÓõÄÊÇNULL_FILTER¹ýÂËÆ÷£¬Èç¹û²ÉÓÃINSO_FILTERÔò²»ÄܶÔÖÐÎĽøÐÐÈ«ÎÄË÷Òý
3¡¢½øÐÐÈ«ÎÄË÷ÒýµÄͬ²½
exec ctx_ddl.sync_index('idx_user_info', '20M');