大æãã¼ã¿ã«ãµã¤ããYahooï¼JAPANããæ¬æ¥ããæ°ãµã¼ãã¹ã¨ãã¦ãã¬ãçãYahooï¼JAPANãã®æä¾ãéå§ããã¨ããçºè¡¨ä¼ãè¡ãã¾ããã ãã¬ããè¦ã¦ãã¦æ°ã«ãªãã¯ã¼ãããã£ãæãããç¶ãã¯WEBã§ãã¨ããCMãæµããæã«ãããã¾æ¤ç´¢ã§ããã¨ãã£ãããã¬ããªãã§ã¯ã®æ¤ç´¢æ¹æ³ã¨æ¥½ãã¿æ¹ãã追åãããµã¼ãã¹ã¨ãªã£ã¦ãããéå»ã«çºå£²ããããã¬ããå«ããå¹ åºãã¡ã¼ã«ã¼ã®ãã¬ãã«å¯¾å¿ãããµã¼ãã¹ã¨ãªã£ã¦ãã¾ãã 詳細ã¯ä»¥ä¸ã®éãã å·¦ããYahooï¼JAPANåç· å½¹ç¤¾é· äºä¸ é åæ°ããã©ãããã©ã¼ã éçºæ¬é¨ EW éçºé¨ é¨é· åæ± æµ©ä¹æ°ãããã³ãã¨ã³ãéçºæ¬é¨ EW éçºé¨ ä½å æ°¸å²æ°ã§ãã äºä¸æ°ã«ããã¨ãä»åãµã¼ãã¹æä¾ãéå§ããããã¬ãçãYahooï¼JAPANãã¯ã䏿¥ã®ãã¡ãã½ã³ã³ã«æ¥ãã¦ããæéãéå®çã§ããããã¬ãã¨ã®æ¥è§¦æéããã½ã³ã³ã¨ã®æ¥è§¦æéã®10åã«ããããã
Hatena ã®ãã¼ã¯ã¼ãç½®æã¢ã«ã´ãªãºã ãTRIE ãã¼ã¹ã®ææ³ã«å¤æ´ã«ãªã£ãããã§ãã以åã« ACæ³ã§ããæ¹æ³ã®è¨äºãæ¸ããã®ã§ãããããã¨ä¼¼ããã¨ããã£ã¦ãã®ã§ããããã ACæ³ã®ããæ¹ã¯åç´ã§ãåæ¹ããæé·ä¸è´ã§ãã¼ã¯ã¼ããè¦ã¤ãã¦ããã¾ããããã¾ã§ã¯é·ããã¼ã¯ã¼ãããé çªã«è¦ã¤ãã¦ããæ¹æ³(æé·ãã¼ã¯ã¼ãåªå ä¸è´)ã ã£ãããã§ãããåæ¹ããè¦ã¤ãã¦ããæ¹æ³ã ã¨çããã¼ã¯ã¼ããåªå ãããå ´åãããã¾ãã http://d.hatena.ne.jp/ita/20060119/p1 http://d.hatena.ne.jp/hatenadiary/20060119/1137667217 æ¬æï¼ããããããããããããããã KW1 ãã KW2 ããããã KW3 ããã KW4 ãããããã ã¨ããæã§KW1-KW4ã®ãã¼ã¯ã¼ãããããããå ´åãæ°ãããªã£ãæ¹æ³ã§ã¯ããããã¨ããã
é©å½ãªåèªç¾¤ãå«ãè¾æ¸ããã£ãã¨ãã¾ããã京é½ã®é«åäºæ¡ã«ç¾å³ããã¤ã麺ã®ãåºãããã*1ã¨ããæç« ãå ¥åã¨ãã¦ä¸ããããã¨ãããã®æç« ä¸ã«å«ã¾ããè¾æ¸ä¸ã®ãã¼ã¯ã¼ããæ½åºããããã¨ãããã¨ãããã¾ããä¾ãã°è¾æ¸ã«ã京é½ããé«åäºæ¡ããã¤ã麺ããåºãã¨ããåèªãå«ã¾ãã¦ããå ´åã«ã¯ããããã®åèª(ã¨åºç¾ä½ç½®)ãå ¥åã«å¯¾ãã¦ã®åºåã«ãªãã¾ãã ãã®é¡ã®å¦çã¯ãä»»æã®éå§ä½ç½®ããé¨åä¸è´ããè¾æ¸ä¸ã®ãã¼ã¯ã¼ãããã¹ã¦åãåºãå¦çãã¨ãããã¨ã§ãå ±éæ¥é è¾æ¤ç´¢ (Common Prefix Search)ããªã©ã¨å¼ã°ããããã§ããå½¢æ ç´ è§£æãWikipedia ãã¯ã¦ãªãã¼ã¯ã¼ãã®ãã¼ã¯ã¼ããªã³ã¯å¦çãªã©ã代表çãªå¿ç¨ä¾ã§ãã Aho Corasick æ³ ä»»æã®ããã¹ãããè¾æ¸ã«å«ã¾ãããã¼ã¯ã¼ãããã¹ã¦æ½åºããã¨ããå¦çã®å®ç¾æ¹æ³ã¯è²ã ã¨ããã¾ããAho Corasick æ³ã¯ãã®æ¹æ³ã®ã²ã¨
å æ¥ãé ç°å·ã®å±å½¢è¹ã§è±è¦ã¨æ´è½è¾¼ãã ã®ã§ããããã®æ¥ã¯ã¾ã ä¸åå²ããè¡ã£ã¦ãªãã¦æ²ããæããããmikioã§ããä»åã¯Tokyo Tyrantï¼TTï¼ã«æ ¼ç´ãããã¼ã¿ã対象ã¨ãã¦MapReduceã®ã¢ãã«ã«åºã¥ãè¨ç®ãããæ¹æ³ã«ã¤ãã¦è¿°ã¹ã¾ãã MapReduceã¨ã¯ Googleã使ã£ã¦ããã¨ãã忣å¦çã®è¨ç®ã¢ãã«ããã³ãã®å®è£ ã®ãã¨ã ããã§ããã詳ãããã¨ã¯ã°ã°ã£ã¦ãã ãããGoogleã«ããåºèªã®è«æãApacheããã¸ã§ã¯ãã«ããHadoopãªã©ã®ãªã¼ãã³ã½ã¼ã¹å®è£ ã«ãããã®ãããã§ãããï¼ç§ã¯ä¸¡è ã¨ã詳ããè¦ã¦ãã¾ãããï¼ã ä»åã®è¶£æ¨ã¯ãCouchDBãMapReduceã¨ç§°ãã¦JavaScriptã§å®ç¾ãã¦ãããã¼ã¿éè¨æ¹æ³ãTTã¨TCã¨Luaã§ãã£ã¦ã¿ãããããªããã¨ãããã¨ã§ããç°¡åã«è¨ãã°ã以ä¸ã®å¦çãå®è£ ãã¾ãã ã¦ã¼ã¶ããè¨ç®éå§ãæç¤ºãããã¨ãTTã¯ãDBå ã®
Pythonã§XMLãæ±ãéã«ã¯ãElementTreeã¨ããã©ã¤ãã©ãªã使ãã¨SAXã£ã½ãAPIã§XMLããã¼ã¹ã§ãããPython 2.5以ä¸ãªããããã©ã«ãã§xml.etree.ElementTreeã¨ããã¢ã¸ã¥ã¼ã«ãããã®ã§ããã使ãã¨è¯ãããããã¯ãcElementTreeã¢ã¸ã¥ã¼ã«ï¼ä»æ§ã¯åãã ãCã§æ¸ããã¦ã¦éãï¼ã使ãã¨è¯ãã import xml.etree.ElementTree as ElementTree parser = ElementTree.XMLParser(target = ParserTarget()) ElementTree.parse(filename, parser)ãã¨ãããã¨åããParserTargetã¯ã©ã¹ã¯ãããããèªåã§å®ç¾©ãã¦ãããã®ã§ããã®ã¯ã©ã¹ã«start, end, data, closeã®4種é¡ã®ã¡ã½ãããå®ç¾©ãã¦ããã¨ããã¼
æè¿ ã¯ã©ã¦ã ã¨ããåèªãæµè¡ãã¦ãã¾ããããå¤§è¦æ¨¡ãªè¨ç®è³æºãä½ã³ã¹ãã§æä¾ãã¦ããããã³ãããããããã®ã§ãèªåã§æã£ã¦ããè¨ç®è³æºãå§è¨ãã¡ããã°éç¨ããæéãç¥èãè¦ããªããããããããµã¼ãã¼ãè²·ãè²»ç¨ãçãã¡ããããå¬ãããã¨ããçºæ³ã«åºã¥ãã¦ãããããããããæè¡çã«ã¯ å¤§è¦æ¨¡ãªè¨ç®è³æºãä½ã³ã¹ãã§æ§ç¯ããæè¡ ããã¤ã³ãã§ãããã å¤§è¦æ¨¡ãªè¨ç®è³æºãã©ããã£ã¦å®ãæ§ç¯ãããã 徿¥ã¯ãã·ã¹ãã ã®è½åãé«ããããã«ã¯ã髿§è½ã»é«æ©è½ï¼ããããé«ä¾¡ãªï¼ãã·ã³ãå°å ¥ããã¨ããã¹ã±ã¼ã«ã¢ããã®ææ³ãæ¡ããã¦ããã®ã ãããã®ææ³ã§ã¯10åã«æ§è½ãä¸ããããã«ããã¨ãã°30åã®ã³ã¹ããããããããããªããã¹ã±ã¼ã«ã¢ããã¨æ¯ã¹ã¦ã¹ã±ã¼ã«ã¢ã¦ãã§ã¯ãå°å ¥ããã³ã¹ãã«ã»ã¼æ¯ä¾ãã¦ãããã©ã¼ãã³ã¹ã®åä¸ãè¦è¾¼ããã ãUNIX magazine 2009å¹´4æå·ã p.31 *1 ä½ç¾ä¸åãã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}