
I. Welcom to Lucene !
Lucene Àº ÀÚ¹Ù·Î ±¸ÇöµÈ °í¼º´ÉÀÇ Ç®ÅØ½ºÆ® °Ë»ö¿£ÁøÀÔ´Ï´Ù
Lucene ÀÌ Á¦°øÇÏ´Â API¸¦ »ç¿ëÇÏ¿© °·ÂÇϰí À¯¿¬ÇÑ °Ë»ö±â´ÉÀ» ¾îÇø®ÄÉÀ̼ǿ¡ ¼Õ½±°Ô Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù
LuceneÀº 2005³â 2¿ù¿¡ Apache top-level ·Î µî±ÞÀÌ »ó½ÂÇÏ¿´°í
¼ºê ÇÁ·ÎÁ§Æ®ÀÎ Nutch ¶ÇÇÑ 2005³â 6¿ù¿¡ Apache Incubator¸¦ Á¹¾÷ÇÏ¿´½À´Ï´Ù
Lucene´Â ´ÙÀ½ 3°¡Áö software¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù
À̹ø °Á¿¡¼´Â Lucene java ÇÔ µÚºº¸°í À¥¿¡´Ù LuceneÀ» ´Þ¾Æº¾½Ã´Ù ^^
°Á ÁøÇà ¼ø¼´Â "µ¥¸ðI ÇÁ·Î±×·¥(¾îÇø® ÄÉÀ̼Ç) -> µ¥¸ðII ÇÁ·Î±×·¥(À¥ ¾îÇø®ÄÉÀ̼Ç) -> µ¥¸ðII ÇÁ·Î±×·¥ ¼öÁ¤" ¼øÀ¸·Î °©´Ï´Ù
ps. Çѱ۰˻öÀÌ °¡´ÉÇÏÁö¸¸ ÇÑ±Û ÇüÅÂ¼Ò ºÐ¼®À» ¾ÆÁ÷±îÁö´Â Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡
ÇѱÛÀº ´Ü¼ø°Ë»öÀ¸·Î ¸¸Á·ÇØ¾ß ÇÕ´Ï´Ù.
ÇÏÁö¸¸ ¿µ¹®Àº ±â¶ËÂ÷°Ô Àߵ˴ϴÙ
II. Download
lucene ´Ù¿î·Îµå
http://www.apache.org/dyn/closer.cgi/jakarta/lucene/binaries/
Âü°í »çÀÌÆ®
http://lucene.apache.org/
http://lucene.apache.org/java/docs/api/index.html
http://lucene.apache.org/java/docs/index.html
http://today.java.net/pub/a/today/2003/11/07/QueryParserRules.html
http://www-128.ibm.com/developerworks/library/j-lucene/
http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html
III. ¼³Ä¡
±×·³ ÀÌÁ¦ Lucene¿¡ Çѹø ºüÁ® º¾½Ã´Ù~!
¨ç ´Ù¿î¹ÞÀº lucene-1.4.3.zip ÆÄÀÏÀ» C:\¿¡ ¾ÐÃàÀ» DZ´Ï´Ù

¨è ¾ÐÃàÀ» Ç®¸é lucene-1.4.3.jar¿Í lucene-demos-1.4.3.jar ÆÄÀÏÀ» Ŭ·¡½º ÆÐ½º¿¡ °Ì´Ï´Ù
"set" ¸í·ÉÀ¸·Î È®ÀÎÇÕ´Ï´Ù
¼³Ä¡ ³¡ ~
IV. µ¥¸ðI ½ÇÇàÇϱâ
Lucene µ¥¸ð¿¡´Â µÎ°¡Áö µ¥¸ð°¡ ÀÖ½À´Ï´Ù
Çϳª´Â ÀϹÝÀûÀÎ À妽Ì, ¹× °Ë»öÀÌ°í ´Ù¸¥ Çϳª´Â À¥¿¡¼ »ç¿ëÇϱâ À§ÇÑ Àε¦½Ì ¹× À¥°Ë»öÀÔ´Ï´Ù
1) µ¥¸ðI ½ÇÇà
¸ÕÀú ³×À̹ö³ª ¾ßÈݰÀº À¥ °Ë»ö¿£ÁøÀ» »ý°¢ÇØ º¾½Ã´Ù
¼öµµ¾øÀÌ ¸¹Àº ¹®¼µéÀÌ ¾î¶»°Ô ÇØ¼ ±×·¸°Ô ºü¸± °Ë»öµÉ±î¿ä?
¹Ù·Î °Ë»ö Àüó¸® ÀÛ¾÷À» Çϱ⠶§¹®ÀÔ´Ï´Ù
¿¹¸¦µé¾î °£´ÜÇÏ°Ô º¸ÀÚ¸é "love"¶ó´Â ´Ü¾î´Â A¹®¼, B¹®¼, C¹®¼¿¡ Æ÷ÇԵǾî ÀÖ´Ù¶ó´Â Á¤º¸¸¦ ¹Ì¸® ¸¸µé¾î µÎ´Â °ÍÀÔ´Ï´Ù
Áï À妽º¸¦ ¸¸µé¾î µÎ´Â °ÍÀÌÁö¿ä
±×¸®°í À¥·Îº¿µéÀÌ ¹®¼¸¦ ¼öÁýÇØ¿À¸é Ãß°¡µÈ ¹®¼µé¿¡ ´ëÇØ ÇÏ·ç¿¡ ¸î¹ø¾¿ ¹èÄ¡ÀÛ¾÷À¸·Î À妽º¸¦ Ãß°¡ÇØ ÁÖ°ÚÁö¿ä
°á°úÀûÀ¸·Î "love" °Ë»ö½Ã À妽º Á¤º¸¸¦ µÚÁ®¼ A¹®¼, B¹®¼, C¹®¼ÀÇ °á°ú¸¦ º¸¿©ÁÖ´Â °Ì´Ï´Ù
luceneµµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù À妽º¸¦ ¸ÕÀú ¸¸µé¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù
¸ÕÀú ÀÏ´Ü µ¥¸ðÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© À妽º¸¦ ¸¸µé¾î º¸°í À̸¦ ÀÌ¿ëÇÏ¿© °Ë»öÇØ º¾½Ã´Ù
³»ºÎ ÄÚµùÀº ÀÏ´Ü ½ÇÇà ÀÌÈÄ¿¡ »ìÆìº¾½Ã´Ù ^_^ (´«¿¡ ¸ÕÀú º¸¿©¾ß ¸Ö ÇØµµ ÀßµÇÁÕ)
C:\lucene-1.4.3\src\ ´Â µ¥¸ðÀ» À§ÇÑ ÀÚ¹Ù¼Ò½º ÆÄÀÏÀÔ´Ï´Ù
¨ç À妽º »ý¼ºÇϱâ
´ÙÀ½ ¸í·ÉÀ¸·Î À妽º¸¦ »ý¼ºÇØ º¾½Ã´Ù
À妽º »ý¼º ¾îÇø®ÄÉÀ̼ÇÀº IndexFiles.java ÀÌ¸ç ÆÄ¶ó¹ÌÅÍ´Â À妽º¸¦ ¸¸µé ¼Ò½ºÆÄÀϵé(°Ë»ö´ë»óÆÄÀϵé) ÀÔ´Ï´Ù
¿©±â¼´Â luceneÀÇ document¸¦ index ó¸®ÇØ º¸°Ú½À´Ï´Ù
¾ßÈ£~ À妽º°¡ »ý¼ºµÇ¾ú½À´Ï´Ù

C:\lucene-1.4.3\index Ç®´õ¸¦º¸¸é ´ÙÀ½ ÆÄÀϵéÀÌ »ý¼ºµÈ °ÍÀ» ¾Ë¼öÀÖ½À´Ï´Ù
¨è °Ë»öÇϱâ
°Ë»ö ¾îÇø®ÄÉÀ̼ÇÀº SearchFiles.java ÀÌ¸ç ½ÇÇà ÈÄ Query: ¿¡ °Ë»öÇÒ ´Ü¾î¸¦ ÀÔ·ÂÇØ º¾½Ã´Ù
¿Í~ ¼º°ø! ¾öû ºü¸¨´Ï´Ù!!
°Ë»ö°á°ú°¡ 10°³¾¿ ¸®½ºÆÃµÇ¸ç ´ÙÀ½ ¸®½ºÆ®´Â y¹öưÀ» Ŭ¸¯ÇÏ¿© Á¶È¸ ÇÒ¼ö ÀÖ½À´Ï´Ù
2) µ¥¸ðI Àε¦½Ì ÄÚµå ºÐ¼®
ÀÌ µ¥¸ð ÇÁ·Î±×·¥Àº °¡Àå ±âº»ÀÌ µÇ´Â ÇÁ·Î±×·¥À¸·Î ÇÙ½É ÄÚµù¸¸ µÇ¾î ÀÖÀ¸´Ï luceneÀ» »ç¿ëÇϱâ À§Çؼ´Â ²À ¾Ë¾Æ µÎ¾î¾ß ÇÕ´Ï´Ù
¨ç Analyzer ¼±ÅÃ
Analyer ´Â ¹®¼¸¦ Àε¦½Ì Çϰųª °Ë»öÇÒ¶§ ÇÙ½ÉÀÌ µÇ´Â ¿ä¼Ò·Î¼, ÅØ½ºÆ®¸¦ ÆÄ½ÌÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù AnalyzerÀÇ Á¾·ù¿¡´Â ´ÙÀ½ ¸î°¡Áö µéÀÌ ÀÖ½À´Ï´Ù
¨è IndexWriter »ý¼º
ÀÚ ÀÌÁ¦ Analyer¸¦ ¼±ÅÃÇßÀ¸¸é IndexWriter¸¦ »ý¼ºÇÏ¿© Index¸¦ ¸¸µé¾îº¾½Ã´Ù
ù¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â index°¡ »ý¼ºµÉ À§Ä¡¸¦ ¸»Çϸç
µÎ¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â ¼±ÅÃÇÑ Analyzer¸¦,
¼¼¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â index¸¦ ÃʱâÈ ÇÏ¿© ´Ù½Ã »ý¼ºÇÒ°ÍÀÎÁö ¸»°ÍÀÎÁö¸¦ ¸»ÇÕ´Ï´Ù
Áï Ãß°¡/»èÁ¦¸¸ ÇÒ °ÍÀÎÁö(false) »õ·Î ¸¸µé°ÍÀÎÁö(true)¸¦ ³ªÅ¸³À´Ï´Ù
¹®¼°¡ ¸¹À»°æ¿ì ¸Å¹ø »õ·Î ¸¸µé¼ö ¾øÀ¸¸ç,
¶ÇÇÑ ¸¸¾à ¸î°³ÀÇ ¹®¼¸¸ º¯°æµÇ¾ú´Âµ¥ ¸ðµÎ ´Ù½Ã À妽º¸¦ ¸¸µé¼ö´Â ¾ø±â ¶§¹®ÀÔ´Ï´Ù (½Ã°£ »ó´çÈ÷ °É¸² --)
¨é Index¿¡ document Ãß°¡
´ÙÀ½À¸·Î ¼Ò½º µð·ºÅ丮(°Ë»ö´ë»ó ¹®¼µé)ÀÇ ÆÄÀϵéÀ» Àо¸ç Analyzer¿¡ ÀÇÇØ ÆÄ½ÌµÈ ¹®¼ Á¤º¸¸¦ À妽º¿¡ Ãß°¡ÇÕ´Ï´Ù
¨ê index optimize
¸¶Áö¸·À¸·Î À妽ÌÇÑ Á¤º¸¸¦ ÇϳªÀÇ ÆÄÀÏ·Î merge ÇÕ´Ï´Ù
Áï °Ë»ö¿¡ ÀûÇÕÇϵµ·Ï ÆÄÀÏÀ» Çϳª·Î ÇÕÄ¡´Â °Ì´Ï´Ù
¨ë index close
»ç¿ëÈÄ ¹Þµå½Ã close ÇսôÙ!
³¡~ °£´ÜÇÏÁÒ?
ÀÌÁ¦ Àüü ¼Ò½º¸¦ »ìÆìº¾½Ã´Ù
¼Ò½º´Â C:\lucene-1.4.3\src\demo\org\apache\lucene\demo ¿¡ ÀÖ½À´Ï´Ù
org.apache.lucene.demo.IndexFiles.java
3) µ¥¸ðI °Ë»ö ÄÚµåºÐ¼®
°Ë»öÀº À妽º¸¦ ¸¸µå´Â Äڵ庸´Ù ÈξÀ ½±½À´Ï´Ù
¨ç IndexSearcher »ý¼º
½ÇÁúÀûÀ¸·Î °Ë»öÀ» ´ã´çÇÒ IndexSearcher¸¦ »ý¼ºÇØ º¾½Ã´Ù
ÆÄ¶ó¹ÌÅͷδ index°¡ »ý¼ºµÇ¾îÀÖ´Â À§Ä¡¸¦ ÀÔ·ÂÇÕ´Ï´Ù
¨è Query »ý¼º
Query´Â ÁúÀÇ ¹®ÀÚ¿À» ÆÄ½ÌÇØ ÁÝ´Ï´Ù (Áï AND,OR,NOT,!,-µîÀÇ ³í¸®¿¬»êÀ̳ª ¿ÍÀϵåÄ«µå *,?µîÀ» ÆÄ½ÌÇÕ´Ï´Ù)
ù¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â ÁúÀǸ¦,
µÎ¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â °Ë»ö Çʵ带,
¼¼¹øÂ° ÆÄ¶ó¹ÌÅÍ´Â À妽º¸¦ ¸¸µç Analyzer¿Í µ¿ÀÏÇÑ Analyzer¸¦ ÀÔ·ÂÇØ Áà¾ß ÇÕ´Ï´Ù
¨é °Ë»ö ¹× °Ë»öÇÑ °á°ú ÀúÀå
ÆÄ½ÌµÈ Äõ¸®¸¦ °¡Áö°í °Ë»öÇÏ¿© ±× °á°ú°ªÀ» ¹Ýȯ ¹Þ½À´Ï´Ù
¹ÝȯµÈ Hits Ŭ·¡½º´Â ¼øÀ§°¡ ¸Å°ÜÁø ¹®¼µé·Î °Ë»ö°á°ú¸¦ ÀúÀåÇϰí À¯ÁöÇÕ´Ï´Ù
¨ê IndexSearcher close
°Ë»öÀÌ ³¡³µÀ¸¸é ´Ý¾ÆÁݽôÙ
Àüü ¼Ò½º¸¦ »ìÆìº¾½Ã´Ù
org.apache.lucene.demo.SearchFiles.java
V. ÁúÀÇ ¹®¹ý
ÁúÀÇ ¹®¹ý¿¡ ´ëÇØ ¾Ë¾Æº¾½Ã´Ù
¨ç A AND B
A¿Í B°¡ ¸ðµÎ Æ÷ÇÔµÈ ¹®¼¸¦ °Ë»öÇÑ´Ù
¨è A OR B
AȤÀº B°¡ Æ÷ÇÔµÈ ¹®¼¸¦ °Ë»öÇÑ´Ù
¨é A NOT B
A´Â Æ÷ÇԵǰí B´Â Æ÷ÇÔµÇÁö ¾Ê´Â ¹®¼¸¦ °Ë»öÇÑ´Ù
A ! B, A - B¿Í µ¿ÀÏÇÏ´Ù
¨ê +A OR B
A OR B¿¡¼ A´Â ¹Þµå½Ã Æ÷ÇÔµÈ ¹®¼¸¦ °Ë»öÇÑ´Ù
¨ë A*
A·Î ½ÃÀÛÇÏ´Â ´Ü¾î°¡ ÀÖ´Â ¹®¼¸¦ °Ë»öÇÑ´Ù
¨ì A?
A·Î ½ÃÀÛÇÏ´Â µÎ±ÛÀÚÀÇ ´Ü¾î°¡ ÀÖ´Â ¹®¼¸¦ °Ë»öÇÑ´Ù
¨í A~
A¿Í ½ºÆç¸µÀÌ ºñ½ÁÇÑ ±ÛÀÚ¸¦ Áö´Ñ ´Ü¾î°¡ ÀÖ´Â ¹®¼¸¦ °Ë»öÇÑ´Ù
¨î (A OR B) AND C
³í¸®¿¬»êÀÇ ±×·çÇÎ ¶ÇÇÑ Áö¿øÇÑ´Ù
AND, OR, NOTµîÀº ¹Ýµå½Ã ´ë¹®ÀÚ·Î ÀÔ·ÂÇØ¾ß Àνĵ˴ϴÙ
´ÙÀ½ ½Ã°£¿¡´Â µÎ¹øÂ° µ¥¸ð ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸°í luceneÀ» À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ´Þ¾Æ º¾½Ã´Ù~
=============================================
º»¹®¼´Â ÀÚÀ¯·Ó°Ô ¹èÆ÷/º¹»ç ÇÒ¼ö ÀÖÁö¸¸
À̹®¼ÀÇ ÀúÀÚ¿¡ ´ëÇÑ ¾ð±ÞÀ» »èÁ¦ÇÏ½Ã¸é ¾ÈµË´Ï´Ù
ÀúÀÚ : GoodBug (unicorn@jakartaproject.com)
ÃÖÃÊ : http://www.jakartaproject.com
=============================================