JOINC ÅëÇÑ °Ë»ö¿£Áø
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : JCvs>Search



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¸ñÂ÷

Contents

1 °ü·Ã¹®¼­
2 ¼Ò°³
3 ÀÛ¼º ÀÌÀ¯
3.1 °Ë»öÃø¸é¿¡¼­ º» »çÀÌÆ® ±¸Á¶ÀÇ º¯°æ
4 ±¹¾î°øºÎ -.-;
4.1 ±¹¾îÀÇ Æ¯Â¡
4.2 ÇüÅÂ¼Ò¿Í ´Ü¾î
4.2.1 ´ÜÀ§ÀÇ ºÐ¼® ¿ø¸® : ´ëÄ¡¿Í °áÇÕ
4.2.2 ¾îÀý°ú ±¸
4.2.3 ´Ü¾î
4.3 Á¤¸®
5 ¼³°è
5.1 µ¥ÀÌÅÍ ÀúÀå ÀϹÝ
5.1.1 µ¥ÀÌÅÍ °Ë»ö ÀϹÝ
5.2 ´Ü¾î Àε¦½Ì ¹æ¹ý
5.2.1 Àε¦½Ì ±âÁØ
6 ¼³°èµµ¸é
6.1 ±âº» °ñ°Ý
6.2 Http Get
6.2.1 int Http::setHost(char *host, int port)
6.2.2 char *Http::Get(char *pageurl)
6.2.3 int Http::ContentType()
6.3 PARSER
6.3.1 Set<string> Parser::Rp(string data)
6.3.2 int Parser::SplitUrl(string *tag)
6.3.3 char *Parser::RemoveChosa(char *word)
6.4 DB Indexing
6.5 DB Å×À̺í Á¤º¸
6.5.1 jsearch_url_index
6.5.2 jsearch_page_index
6.5.3 jsearch_word_index
7 Àâ´ãµé

1 °ü·Ã¹®¼­

À̸§
Á¦¸ñ
º¯°æÀÏ
Å©±â
°Ë»ö¿£Áø¹× °Ë»ö¼­ºñ½º
2008/10/27 15:37
72


2 ¼Ò°³

<!> syntax °ü·Ã ºÎºÐ¿¡ ´ëÇØ¼­´Â ÇöÀç Åë»ç·ÐÀ» °øºÎÁßÀÌ´Ï, ÀÌ°É Åä´ë·Î Àç ÀÛ¼ºµÇ¾î¾ß ÇÒ °Í °°´Ù. - 2008/10/28
joinc´Â Áö±Ý ÇÔ¼ö, (°­ÁÂ)±â»ç, wiki µî 3°³ÀÇ Ä¿´Ù¸¥ ÄÁÅÙÃ÷·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±×·±µ¥ °Ë»öÀÌ °³º°ÀûÀ¸·Î ÀÌ·ç¾îÁö°í À־ ¿øÇÏ´Â ³»¿ëÀ» È¿°úÀûÀ¸·Î ã±â Èûµéµµ·Ï µÇ¾î ÀÖ´Ù. google¸¦ °Ë»ö¿£ÁøÀ¸·Î Ȱ¿ëÇÒ±î »ý°¢ÇØ º¸¾ÒÁö¸¸ »çÀÌÆ® ƯȭµÇ°Ô »ç¿ëÇϱâ À§Çؼ­´Â Á¦¾à»çÇ×ÀÌ ¸¹À½À» ¾Ë°Ô µÇ¾ú´Ù.

À§ÀÇ °Ë»öÀÌ È¿°úÀûÀ¸·Î ÀÌ·ç¾îÁöÁö ¾Ê´Â ´Ù´Â ÀÌÀ¯·Î »çÀÌÆ® ƯȭµÈ °Ë»ö¿£ÁøÀ» ¸¸µé±â·Î Çß´Ù.


3 ÀÛ¼º ÀÌÀ¯

¼Ò°³ ºÎºÐ¿¡¼­ °£´ÜÈ÷ ÀÌÀ¯¸¦ ¹àÇû´Ù. ÇöÀç JOINCÀÇ ÄÁÅÙÃ÷´Â ÇÔ¼ö»çÀü, Docbook ÄÁÅÙÃ÷, wiki ÄÁÅÙÃ÷, °Ô½ÃÆÇÀÇ 3°³ ºÎºÐÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ¶ÇÇÑ ÄÁÅÙÃ÷ÀÇ À¯Áö¹æ¹ýµµ ÅëÀϵǾî ÀÖÁö ¾Ê´Ù. ÇöÀç ÇÔ¼ö»çÀü°ú Docbook ÄÁÅÙÃ÷ÀÇ ´ëºÎºÐÀº mysql¿¡ ÀúÀåµÇ¾î ÀÖÁö¸¸ wiki ÄÁÅÙÃ÷ÀÇ °æ¿ì ¸ðµÎ ·ÎÄà ÆÄÀϽýºÅÛ¿¡ ÀúÀåµÈ´Ù.

ÀÌ·¸°Ô µÇ¾î ÀÖ´Ùº¸´Ï È¿À²ÀûÀÎ °Ë»öÀÌ ¸Å¿ì ¾î·Æµµ·Ï µÇ¾î ÀÖ´Ù. °Ë»ö¿£ÁøÀ» ¸¸µå´Â ÀÌÀ¯´Â ºÐ¸®µÇ¾î ÀÖ´Â °Ë»öÅøÀ» Çϳª·Î ÅëÇÕÇØ¼­ º¸´Ù ½±°í È¿°úÀûÀ¸·Î ¿øÇÏ´Â ÄÁÅÙÃ÷¸¦ ãµµ·Ï Çϴµ¥ ÀÖ´Ù.

3.1 °Ë»öÃø¸é¿¡¼­ º» »çÀÌÆ® ±¸Á¶ÀÇ º¯°æ

Àû´çÇÑ °Ë»ö ¿£ÁøÀ» ÀÛ¼ºÇϱâ À§Çؼ­ ÇöÀç »çÀÌÆ®ÀÇ °³·«ÀûÀÎ ±¸Á¶¸¦ ¸ÕÀú ±â¼úÇϵµ·Ï ÇÑ´Ù.
      +--------------------------------------------+ 
      | USER                                       |  
      +--------------------------------------------+ 
          |         |                   
          |         |                  
          |         |                 
      +--------+    |       +----------------------+ 
      | JOINC  |    |       |  SQL SERVER          |         
      +--------+    |       |  +---------+ +-----+ | 
      |        | <--------  |  | Article | | BBS | | 
      |        |    |       |  +---------+ +-----+ | 
      |        |    |       +----------------------+  
      |        |    |       +----------------------+ 
      |        |    |       |  FILE SYSTEM         | 
      |        |    |       |  +-------+ +------+  | 
      |        |    +------ |  | JWIKI | | JCVS |  | 
      |        |            |  +-------+ +------+  | 
      +--------+            +----------------------+ 
 
À§ÀÇ ±×¸²¿¡¼­ º¸À̵íÀÌ »ç¿ëÀÚ´Â 2°¡Áö °æ·Î¸¦ ÅëÇØ¼­ ÄÁÅÙÃ÷¿¡ Á¢±ÙÇÏ°Ô µÈ´Ù. ³»ºÎÀûÀ¸·Î ±¸Á¶°¡ º¹ÀâÇϰųª Á¤¸®µÇ¾î ÀÖÁö ¾Ê´Ù°í ÇÏ´õ¶óµµ ÃÖÁ¾ÀûÀ¸·Î »ç¿ëÀÚ´Â ´ÜÀÏ Åë·Î¸¦ À¯ÁöÇϵµ·Ï ¸¸µé¾î¾ß ÇÑ´Ù´Â Á¡¿¡¼­ º¼¶§ À§ÀÇ ±¸Á¶¿¡´Â ¹®Á¦°¡ ÀÖ´Ù. ƯÈ÷ °Ë»ö¿¡ À־ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. °Ë»öÀÇ ¹®Á¦¿Ü¿¡µµ ÀÎÅÍÆäÀ̽º°¡ ÅëÀϵǾî ÀÖÁö ¸øÇÏ´Ù´Â ¹®Á¦°¡ ÀÖÁö¸¸ ÀÏ´Ü ±×°Ç ³í¿Ü·Î Çϵµ·Ï ÇϰڴÙ.
      +--------------------------------------------+ 
      | USER                                       |  
      +--------------------------------------------+ 
          | 
      +--------------------------------------------+ 
      | Search Engine                              | 
      +--------------------------------------------+  
          |         |                  
          |         |                 
      +--------+    |       +----------------------+ 
      | JOINC  |    |       |  SQL SERVER          |         
      +--------+    |       |  +---------+ +-----+ | 
      |        | <--------  |  | Article | | BBS | | 
      |        |    |       |  +---------+ +-----+ | 
      |        |    |       +----------------------+  
      |        |    |       +----------------------+ 
      |        |    |       |  FILE SYSTEM         | 
      |        |    |       |  +-------+ +------+  | 
      |        |    +------ |  | JWIKI | | JCVS |  | 
      |        |            |  +-------+ +------+  | 
      +--------+            +----------------------+ 
 
À§¿¡¼­ ó·³ ÅëÇÔ °Ë»ö ¿£ÁøÀ» µÒÀ¸·Î½á »ç¿ëÀÚ´Â ´ÜÀÏÀÇ ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ¿øÇÏ´Â ÄÁÅÙÃ÷¸¦ ¾ò¾î³¾ ¼ö ÀÖ´Ù.

4 ±¹¾î°øºÎ -.-;

À妽ºµÈ ´Ü¾î¸¦ ¸¸µé±â À§Çؼ­ Á¶»ç, Á¢¼Ó»çµîÀ» Á¦°ÅÇØ¾ßµÉ Çʿ䰡 ÀÖ´Ù. °í·Î ±¹¾î¿¡¼­ÀÇ ´Ü¾î ÇüÅ¿¡ ´ëÇÑ ±âº»ÀûÀÎ ÀÌÇØ°¡ ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î Á¶»ç´ÙÀ½¿¡ ¿¡¼­,±×¸®°í, ·Î¼­µîÀÌ ¿Ã ¼ö ¾øÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ °ÍÀ» °í·ÁÇÏÁö ¾ÊÀ»°æ¿ì ¼öÀº°°Àº ´Ü¾î¸¦ À妽º Çϴµ¥ ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù.
¼öÀº´Üµ¶À¸·Î »ç¿ëµÇ´Â °æ¿ì´Â ¾î¿¼ö ¾ø´Ù°í ÇÏ´õ¶óµµ, ¼öÀºÀº, ¼öÀº¿¡¼­ µîÀº ÃæºÐÈ÷ ºÐ¼®ÇØ ³¾ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÁÖ°ÝÁ¶»ç µÎ°³°¡ »ç¿ëµÉ ¼ö ¾ø´Ù¿Í ¿¡¼­¾Õ¿¡ ÁÖ°ÝÁ¶»ç°¡ »ç¿ëµÉ ¼ö ¾ø´Ù´Â °É ¾Ë°í ÀÖ´Ù¸é ÃæºÐÈ÷ ºÐ¼®ÇØ ³¾ ¼ö ÀÖ´Ù.

¿©±â¿¡¼­ ¾òÀº Áö½ÄÀº Parser¸ðµâÀ» ¸¸µå´Âµ¥ µµ¿òÀÌ µÉ°ÍÀÌ´Ù.


4.1 ±¹¾îÀÇ Æ¯Â¡

  1. ÷°¡¾î(¶Ç´Â ±³Âø¾î)ÀÌ´Ù.
  2. ÁÖ¾î+¸ñÀû¾î+µ¿»çÀÇ Åë»çÀû Ư¡À» °¡Áö¸ç ÀÚ¸®¿Å±èÀÌ ºñ±³Àû ÀÚÀ¯·Ó´Ù.
  3. Á־ ¾ø´Â ¹®ÀåÀÌ ÈçÈ÷ ¾²À̸ç Á¶»ç ¹× ¾î¹Ì°¡ ¹ß´ÞÇß´Ù.

4.2 ÇüÅÂ¼Ò¿Í ´Ü¾î

4.2.1 ´ÜÀ§ÀÇ ºÐ¼® ¿ø¸® : ´ëÄ¡¿Í °áÇÕ

  1. ´ëÄ¡ : ¾î¶² ¸»ÀÌ °°Àº ¼ºÁúÀ» °¡Áø ´Ù¸¥ ¸»·Î ´ëÄ¡µÉ ¼ö ÀÖÀ¸¸é ÇϳªÀÇ ´ÜÀ§¸¦ ÀÌ·ç´Â °ÍÀ¸·Î °£ÁÖÇÑ´Ù. À̶§ ´ëÄ¡µÉ ¼ö ÀÖ´Â ¿ä¼Òµé »çÀÌÀÇ °ü°è¸¦ °è¿­°ü°è¶ó°í ÇÑ´Ù.
¿¹) ö¼ö°¡ | Çб³¿¡ | °¬´Ù. |±ØÀå¿¡|
  1. °áÇÕ : ¾î¶² ¸»ÀÌ ÀÚ½ÅÀÇ ¾ÕÀ̳ª µÚ¿¡ ´Ù¸¥¸»ÀÌ °áÇÕÇÒ ¼ö ÀÖÀ¸¸é ÇϳªÀÇ ´ÜÀ§¸¦ ÀÌ·ç´Â °ÍÀ¸·Î °£ÁÖÇÑ´Ù. À̶§ °áÇÕµÉ ¼ö ÀÖ´Â ¿ä¼Òµé »çÀÌÀÇ °ü°è¸¦ ÅëÇÕ°ü°è¶ó°í ÇÑ´Ù.
    ¿¹) ÇÏ´ÃÀÌ (´õ¿í) Ǫ¸£´Ù.

4.2.2 ¾îÀý°ú ±¸

  1. ¾îÀý : ¹®ÀåÀ» ±¸¼ºÇϰí ÀÖ´Â µµ¸·µµ¸·ÀÇ ¸¶µð¸¦ ¾îÀýÀ̶ó°í Çϴµ¥, ½ÇÁ¦ÀÇ ¹ßÈ­¿¡¼­ ¾îÀýÀÇ ¾ÕÀ̳ª µÚ¿¡´Â ÈÞÁö(pause)¸¦ µÑ ¼ö ÀÖ´Ù. ÇöÇà ¸ÂÃã¹ýÀÇ ¶ç¾î¾²±â´Â ¾îÀýÀ» ´ÜÀ§·Î Çϰí ÀÖ´Ù.
    ¿¹) ö¼ö°¡ | µ¿È­¸¦ || Àоú´Ù.
  2. ±¸ : µÑ ¶Ç´Â ±× ÀÌ»óÀÇ ¾îÀýÀÌ ¾î¿ï·Á¼­ Å« ¸¶µð°¡ µÈ ¸»À» ±¸¶ó°í ÇÑ´Ù.

4.2.3 ´Ü¾î

ÀÚ¸³¼ºÀÌ ÀÖ´Â ÇüżҸ¦ ´Ü¾î¶ó°í ÇÑ´Ù. ÀÚ¸³¼ºÀÌ ÀÖ´Ù´Â °ÍÀº ¾ÕÀ̳ª µÚ¿¡ ÈÞÁö°¡ ¿Ã ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù. ÇÑÆí ±¹¾îÀÇ Á¶»ç´Â ºñ·Ï ÀÚ¸³¼ºÀº ¾øÀ¸³ª, ÀÚ¸³Çüżҿ¡ °áÇÕÇÏ¿© ¾²À̸ç, ¾Õ¿¡ ´Ù¸¥¸»ÀÇ °³ÀÔÀ» Çã¿ëÇÏ´Â µî, ¾ÕÀÇ ¸»°ú ½±°Ô ºÐ¸®µÉ ¼ö Àִ Ư¡À» Áö´Ï°í Àֱ⠶§¹®¿¡ ´Ü¾î·Î °£ÁÖÇÑ´Ù. °á±¹ ±¹¾î ´Ü¾îÀÇ Á¤¸³±âÁØÀº ÀÚ¸³¼º°ú ºÐ¸®¼º¿¡ ÀÖ´Ù.

¿¹) ö¼ö°¡(ö¼ö-°¡) Áý¿¡(Áý-¿¡) °¬´Ù(°¡-¾Ò-´Ù)

ÀÇÁ¸¸í»ç¿Í º¸Á¶¿ë¾ðÀº ÀÚ¸³¼ºÀÌ °á¿©µÇ¾î ÀÖÀ¸³ª, ÀϹÝÀûÀ¸·Î ÀÚ¸³ÇüżҰ¡ ³ªÅ¸³ª´Â ȯ°æ¿¡ ¾²À̸ç, Àǹ̵µ ¿ÏÀüÈ÷ ¹®¹ýÀûÀ̶ó°í ÇÒ ¼ö ¾øÀ¸¹Ç·Î ÁØÀÚ¸³¾î¶ó°í ºÎ¸£¸ç ´Ü¾î·Î °£ÁÖÇÑ´Ù.

¿¹) ¸ÔÀ» °ÍÀÌ ¸¹´Ù. Çѹø ¸Ô¾î º¸¾Æ¶ó.

º¹¼öÀÓÀ» ³ªÅ¸³»´Â µéÀº ÀÚ¸³¼ºÀÌ ÀÖ´Â Çüżҿ¡ °áÇÕÇÏ¿© ¾²ÀÌÁö¸¸, ƯÁ¤ ¸í»ç·ù¿¡¸¸ °áÇÕÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ º¸Æí¼ºÀÌ °á¿©µÇ¾î ÀÖÀ¸¹Ç·Î ´Ü¾îÀÇ ÀÚ°ÝÀÌ ¾ø´Ù.

¿¹) »ç¶÷µéÀÌ ¸¹ÀÌ º¸¿´´Ù. ¿î¿µÃ¼Á¦µéÀÇ Æ¯¼ºÀ» ¼³¸íÇϽÿÀ.

4.3 Á¤¸®

À妽º´Â ´Ü¾î¸¦ ±âÁØÀ¸·Î ÇÑ´Ù. ±×·¯¹Ç·Î ¹Þ¾ÆµéÀÎ ¹®ÀåÀ» ¾îÀý·Î ±¸ºÐÇÏ°í °¢ ¾îÀý¿¡¼­ ÀǹÌÀÖ´Â ´Ü¾î¸¦ ¾ò¾î¿À±â À§Çؼ­ ¾î¹Ì¿Í Á¢»ç¸¦ Á¦°Å ½ÃŲ´Ù.

ÀǹÌÀִ¿¡ ÁÖ¸ñÇØ¾ß ÇÑ´Ù. ¸ÔÀ» °ÍÀÌ ¸¹´Ù. ¿¡¼­ ¸Ô°ú °ÍÀº ´Ü¾îÀÌÁö¸¸ ³Ê¹« ª°í ÀϹÝÀûÀ̱⠶§¹®¿¡ ÀÌµé ´Ü¾î¸¦ ºÐ·ùÇØ ³»Áö´Â ¾Ê´Â´Ù. Ư¡ÀûÀº Àǹ̸¦ °¡Áö°í ÀÖ´Â ´Ü¾î¿¡ ÇÑÇØ¼­ ºÐ·ùÇØ ³½´Ù. Ư¡ÀûÀÎ Àǹ̸¦ ±¸ºÐÇØ³»´Â ±âÁØÀº ´Ü¾îÀÇ ±æÀÌ·Î ÇÑ´Ù. ¿µ¹®Àº 3byte ÇѱÛÀº 4byteÀÌ»óÀ¸·Î ÇÑ´Ù.

5 ¼³°è

Down -> Top ¹æ½ÄÀ¸·Î ±â¼úÇÑ´Ù. °Ë»ö¿£ÁøÀ» À§ÇÑ °¢ ±â´ÉµéÀÇ ÀϹݻçÇ×À» ±â¼úÇϰí À̸¦ Åä´ë·Î ÀüüÀûÀÎ °Ë»ö¿£Áø ÀÇ ¸ð¾çÀ» ±â¼úÇÑ´Ù.

5.1 µ¥ÀÌÅÍ ÀúÀå ÀϹÝ

URL ¸µÅ©¸¦ °Ë»öÇØ¼­ À¥ÆäÀÌÁö¸¦ ÀÐ¾î µéÀÌ°í ´Ü¾î¸¦ ±âÁØÀ¸·Î À妽º¸¦ ÀÛ¼ºÇÑ´Ù. À̵é À妽º Á¤º¸µéÀº DB¸¦ ÅëÇØ¼­ °ü¸® µÇ¸ç, ½ÇÁ¦ ÆäÀÌÁö´Â ·ÎÄÃÈ£½ºÆ®¿¡ ÀÏ¹Ý ÆÄÀÏ ÇüÅ·ΠÁ¸ÀçÇÏ°Ô µÈ´Ù. ÀÌµé ÆÄÀÏÀº ÆäÀÌÁöÀÇ À̸§±×´ë·Î ÀúÀåµÈ´Ù.

À妽º Á¤º¸¸¦ ÀúÀåÇϱâ À§Çؼ­ 2°³ÀÇ Å×À̺íÀÌ ÇÊ¿äÇÏ´Ù. Çϳª´Â »çÀÌÆ®(Site)À̸§À» ÀúÀåÇϱâ À§ÇÑ ¿ëµµ·Î »ç¿ëµÇ¸ç ´Ù¸¥ Çϳª´Â ÆäÀÌÁöÀÇ URLÁ¤º¸¿Í ÆäÀÌÁö°¡ ÀúÀåµÈ À§Ä¡ Á¤º¸¸¦ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù.

  • »çÀÌÆ® À̸§À» ÀúÀåÇϱâ À§ÇÑ Å×À̺íÀÇ À̸§Àº jsearch_url_index·Î ÇÑ´Ù.
  • ÆäÀÌÁö Á¤º¸¸¦ ÀúÀåÇϱâ À§ÇÑ Å×À̺íÀÇ À̸§Àº jsearch_page_index·Î ÇÑ´Ù.

À妽º Å×À̺íÀÌ ¸¸µé¾î Á³´Ù¸é ´Ü¾îº° À妽º¸¦ ¸¸µé±â À§ÇÑ Å×À̺íÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ Å×ÀÌºí¿¡´Â ÇØ´ç ´Ü¾î¸¦ Æ÷ÇÔÇÑ jpi¿Í juiÀÇ ¸®½ºÆ®¸¦ °¡Áø´Ù.
  • ´Ü¾îÀÇ À妽º¸¦ ÀúÀåÇÏ´Â Å×À̺íÀÇ À̸§Àº jsearch_word_index·Î ÇÑ´Ù.

ÀÌÁ¦ ½ÇÁ¦ ³»¿ëÀ» Æ÷ÇÔÇÑ ÆÄÀÏÀÌ ÀúÀåµÇ¾î¾ß Çϴµ¥, À̵éÀº $pre_fix_dir/$jui/$jpiÇüÅ·ΠÀúÀåµÈ´Ù. ´ÙÀ½Àº ½ÇÁ¦ ÀúÀå ¿¹ÀÌ´Ù.
°¡Á¤  
$pre_fix_dir = "/usr/jsearch" 
$jui = 1  
$jpi = 2 
$page_name = "/modules.php?name=test&file=myfile" 
 
°á°ú 
ÀúÀåµÈ ÆÄÀÏÀ̸§ : "/usr/jsearch/1/2" 
 
½ÇÁ¦ ÆäÀÌÁöÀÇ Á¤È®ÇÑ URLÁ¤º¸´Â jui, jpi µÎ°³ÀÇ Å×ÀÌºí¿¡ ÀÖ´Â Á¤º¸¸¦ ÀÌ¿ëÇØ¼­ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.

´Ü¾îÀ妽º´Â ÀоîµéÀÎ ÆäÀÌÁö¸¦ HTMLÆÄ½ÌÇϰí À̸¦ ´Ù½Ã \n +¸¦ ±âÁØÀ¸·Î ÆÄ½ÌÇØ¼­ ´Ü¾îÀÇ ¸ñ·ÏÀ» ¾ò¾î³»°í °¢ ´Ü¾î¿¡ ´ëÇÑ jui¿Í jpiÁ¤º¸¸¦ ÀÔ·ÂÇÔÀ¸·Î½á ¸¸µé¾îÁø´Ù.

5.1.1 µ¥ÀÌÅÍ °Ë»ö ÀϹÝ


5.2 ´Ü¾î Àε¦½Ì ¹æ¹ý

5.2.1 Àε¦½Ì ±âÁØ

  • ´Ü¾î À妽ÌÀº plain/text¿Í plain/htmlÆäÀÌÁö¿¡ ÇÑÇØ¼­ ÀÌ·ç¾îÁø´Ù.
  • html¹®¼­ÀÇ °æ¿ì ÆÄ½ÌÀ» °ÅÃļ­ Å×±×´Â ¸ðµÎ Á¦°ÅÇÑ´Ù. <a-zA-Z0-9\.\+\/-\_+>¿Í <...\n\/>¸¦ Å×±×·Î °£ÁÖÇÑ´Ù.
  • ÆÄ½ÌÀº [ \t]+À» ±âÁØÀ¸·Î ÇÑ´Ù.
  • ¿µ¹®±âÁØ 3ÀÚ ÀÌ»óÀ» ´Ü¾î·Î °£ÁÖÇÑ´Ù.
  • ÇѱÛ, a-zA-Z0-9¿ÜÀÇ ¹®ÀÚ´Â °ø¹éÀ¸·Î ó¸®Çؼ­ ´Ü¾î¸¦ ºÐ¸®ÇÑ´Ù.
    • ¿¹) linux,unix,windows => linux unix windows 3°³ÀÇ ´Ü¾î°¡ µÈ´Ù.
  • Á¶»ç¿Í ?? ´Â Á¦°ÅÇÑ´Ù. Á¦°ÅÇÒ Á¶»çÀÇ ¸ñ·ÏÀº ¾Æ·¡¿Í °°´Ù.
    Àº ´Â ÀÌ °¡
    À¸·Î ¿Í ºÎÅÍ Ã³·³
    ±îÁö ¿¡¼­ °ú ·Î¼­
    ·Î½á À̹ǷΠ±×·¯¹Ç·Î ±×¸®°í
    ±×·¡¼­ °í·Î
  • ¿µ¹®°ú ÇѱÛÀÌ Á¶ÇյǾî ÀÖÀ»°æ¿ì ´ëºÎºÐ ¿µ¹®+ÇѱÛÁ¶»ç À̹ǷΠÇѱÛÀ» Á¦°ÅÇÑ´Ù.
    • ¿¹) IPC¿¡¼­ => IPC, Á¦°Å¹æ¹ýÀº ´Ü¾îÀÇ Ã¹±ÛÀÚ¸¦ º¸°í ÆÇ´ÜÇÑ´Ù. Áï óÀ½ ÇѹÙÀÌÆ®°¡ 127 º¸´Ù ÀÛ´Ù¸é ¿µ¾î·Î ÆÇ´ÜÇϰí È®Àå ASCII°¡ ÃÖÃÊ·Î ¹ß°ßµÇ´Â ½ÃÁ¡¿¡¼­ ´ÙÀ½ÀÇ ¸ðµç ¹®ÀÚµéÀº »èÁ¦½ÃŲ´Ù.

6 ¼³°èµµ¸é

¿©±â ÀÖ´Â°Ç ¸»±×´ë·Î µµ¸éÀÌ´Ù. ½ÇÁ¦ ¼¼ºÎÀûÀÎ ±¸Çö¿¡ À־ ÀÚ·áÇüµîÀº (È¿À²ÀûÀÎ)ÀÚ·áÇüÀ¸·Î º¯°æµÉ °ÍÀÌ´Ù.

6.1 ±âº» °ñ°Ý

ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ±¸¼ºÀ» °¡Áö¸ç, Å©°Ô 3°³ÀÇ ¸ðµâ·Î ÀÌ·ç¾îÁø´Ù.
 +-------------------+       
 | WEB SERVER        | 
 +-------------------+       
       | GET 
   1.  |                    2. 
  +----------+ page       +-------------+ page 
  | Http Get | ---------> | PARSER      |-------------> FILE SYSTEM  
  +----------+            +=============+  
       |  4.              | HTML parse  | 
       | +-----------+    |             | 
       +-| URL TABLE |<---|-----+       | 
         +-----------+    |     |       | 
                          |     |       | 
                +---------| parsing     |  
                |         +-------------+ 
                |  
                | ´Ü¾î/page index     3.                       
                |         +-------------+ 
                +-------->| DB Indexing |------------> DB SYSTEM  
                          +-------------+ 
 
  1. Webserver·Î ¿¬°áÀ» ½ÃµµÇؼ­ ¿äûÇÑ ÆäÀÌÁö¸¦ °¡Á®¿Â´Ù. ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ°ÚÀ¸³ª ¿ì¼±Àº GET¹æ½Ä¸¸À» Áö¿øÇϵµ·Ï ÇÑ´Ù.
  2. Http Get¿¡¼­ °¡Á®¿Â page´Â PARSER·Î ³Ñ¾î°£´Ù. ¿©±â¿¡¼­´Â HTMLÅױ׸¦ ¾ø¾Ö°í ÆäÀÌÁö·Î ºÎÅÍ ´Ü¾î¸¦ ±¸ºÐÇØ³½´Ù. ³Ñ¾î¿Â page´Â ÁöÁ¤µÈ µð½ºÅ© °ø°£¿¡ ÀúÀåµÈ´Ù.
  3. ´Ü¾îÀÇ ¸ñ·ÏÀº DB IndexingÀ¸·Î ³Ñ¾î¿À°í ´Ü¾îÀÇ ¸ñ·Ï°ú page index¸¦ ÀÌ¿ëÇØ¼­ DB¿¡ ÀúÀåÇÑ´Ù.
  4. PARSER´Â HTML ÆÄ½ÌÀ» Çϸ鼭 URLÁ¤º¸µéÀº º°µµ·Î URL TABLE¿¡ ÀúÀåÇÑ´Ù. URL TABLE¿¡ ÀÖ´Â Á¤º¸µéÀº Http Get¿¡¼­ ÆäÀÌÁö¸¦ ¿äûÇϱâ À§ÇÑ Á¤º¸·Î »ç¿ëµÈ´Ù. ÀÌ Å×À̺íÀº stackÇüÅ·ΠÀ¯ÁöµÈ´Ù. ´Ü Áߺ¹µÇ´Â URLÀ» ´Ù½Ã °Ë»öÇÒ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î º°µµÀÇ Å×À̺íÀ» À¯ÁöÇØ¼­ ±×µ¿¾È ¿äûÇÑ ¸ðµç URLÀÇ ÆäÀÌÁö¸¦ ÀúÀåÇØ µÎ¾î¾ß ÇÑ´Ù.

6.2 Http Get

À̰ÍÀº ´ÜÀÏÀÇ Å¬·¡½º·Î ÀÌ·ç¾îÁø´Ù. WEB SERVER¿¡ Á¢±ÙÇØ¼­ ÆäÀÌÁö¸¦ ¿äûÇϸç ÀоîµéÀÎ ÆäÀÌÁö¸¦ ´Ù¸¥ ¸ðµâ¿¡¼­ ¿ä±¸ÇÒ ¶§ µÇµ¹·ÁÁØ´Ù.

ÀÌ ¿Ü¿¡µµ ÀÌ Å¬·¡½º´Â "href"¸¦ ¸¸³µÀ» ¶§ À̸¦ ºÐ¼®Çؼ­ URLÁ¤º¸¸¦ Àоî¿Í¼­ ¸ñ·ÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ±âº»ÀûÀ¸·Î ¸µÅ©±â¹ÝÀ¸·Î ÆäÀÌÁö¸¦ ¼öÁýÇϱ⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ­ ÆÄ½ÌÀ» ÇØ¾ß ÇÑ´Ù. ±×·¯³ª ÀÌ ¸ðµâÀº º°µµÀÇ ÆÄ¼­¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀ¸¹Ç·Î PARSER·Î ºÎÅÍ »ý¼ºµÈ URLÀ» ÀÌ¿ëÇÑ´Ù.

ÀÌ ¸ðµâÀº ´ë·« ´ÙÀ½°ú °°Àº Ŭ·¡½º·Î ¸¸µé¾îÁø´Ù.
class Http 
{ 
    private: 
        string host;  
        int  port;   
        int  sockfd; 
        char *data; 
        char *header; 
        int  datalen; 
        int  cdatasize; 
        int  memsize; 
        struct sockaddr_in serveraddr; 
        int addrlen; 
 
    public: 
        Http(); 
        ~Http();  
        int setHost(char *, int); 
        struct header getHeader(); 
        int ContentType(); 
        char *Get(char *); 
}; 
 
string host ¿¬°áÇÒ È£½ºÆ® À̸§
int port Æ÷Æ®¹øÈ£
int sockfd ¿¬°á ¼ÒÄÏ
char * data ÀоîµéÀÎ ÆäÀÌÁö
char * header ÆäÀÌÁöÀÇ Çì´õ Á¤º¸
int datalen ÆäÀÌÁöÀÇ Å©±â
struct sockaddr_in serveraddr ¼­¹öÁÖ¼Ò
int addrlen ¼­¹öÁÖ¼Ò ±¸Á¶Ã¼ ±æÀÌ

6.2.1 int Http::setHost(char *host, int port)

ÆäÀÌÁö¸¦ ¿äûÇÒ ¼­¹ö È£½ºÆ® Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù.
  1. host : È£½ºÆ® À̸§
  2. port : Æ÷Æ®¹øÈ£, ±âº»ÀÎÀÚ·Î 80ÀÌ »ç¿ëµÈ´Ù.

6.2.2 char *Http::Get(char *pageurl)

ÆäÀÌÁö¸¦ ¿äûÇÑ´Ù. ÆäÀÌÁö¸¦ ¿äûÇϱâ Àü¿¡ setHostÁ¤º¸¸¦ ÀÌ¿ëÇØ¼­ ¼­¹ö¿¡ connectÇÑ´Ù.
  1. pageurl ¿äûÇÒ ÆäÀÌÁöÀÇ À̸§ÀÌ´Ù.

pageurlÀ» ÀÌ¿ëÇØ¼­ ´ÙÀ½°ú °°ÀÌ Á¢±ÙÀ» ½ÃµµÇÑ´Ù.
GET /$pageurl HTTP/1.0\n\n 
 

HTTPÀÇ Çì´õ´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ» °¡Áø´Ù.
HTTP/1.1 200 OK 
Date: Thu, 25 Dec 2003 10:59:49 GMT 
Server: Apache/1.3.28 (HPUX) PHP/4.3.22 
X-Powered-By: PHP/4.3.22 
Set-Cookie: lang=kor; expires=Fri, 24-Dec-2004 10:59:49 GMT 
Set-Cookie: cycounter=cycounter; expires=Fri, 02-Jan-1970 00:00:00 GMT; path=/ 
Connection: close 
Content-Type: text/html 
 
¿äûÇÑ µ¥ÀÌÅÍÀÇ Content-Type¸¦ ¾Ë¾Æ¾ß ÇϹǷΠÇì´õÁ¤º¸¸¦ ¾ò´Â °ÍÀº ¸Å¿ì Áß¿äÇÏ´Ù. Ãʱ⠹öÀü¿¡¼­´Â ´ÜÁö text/html¹®¼­¸¸À» ´Ù·ê °ÍÀÌ´Ù. ´Ù¸¥ Á¾·ùÀÇ µ¥ÀÌÅ͵éÀº ¸ðµÎ ¹ö¸°´Ù.

6.2.3 int Http::ContentType()

°¡Àå ÃÖ±Ù ¹®¼­ÀÇ ContentTypeÀ» µÇµ¹·ÁÁØ´Ù. ÇöÀç´Â text/html¿¡ ´ëÇÑ °Í¸¸ Á¤ÀǵǾî ÀÖ´Ù. ¸¸¾à text/htmlÀ̶ó¸é 1À» ±×·¸Áö ¾ÊÀ»°æ¿ì 0À» µÇµ¹·ÁÁØ´Ù.

6.3 PARSER

Http::Get()À» ÀÌ¿ëÇØ¼­ ¾ò¾î¿Â ¹®¼­¸¦ ÆÄ½ÌÇÑ´Ù. ÆÄ½ÌÇϱâ Àü¿¡ Http::ContentType()¸¦ ÀÌ¿ëÇØ¼­ ÆÄ½Ì°¡´ÉÇÑ µ¥ÀÌÅÍÀÎÁö¸¦ ¸ÕÀú È®ÀÎÇÏ°í ÆÄ½Ì°¡´ÉÇÑ µ¥ÀÌÅͶó¸é ÇØ´ç ÆÄ½Ì¸Þ¼­µå¸¦ ½ÇÇà ½ÃŲ´Ù.

ÆÄ½Ì°¡´ÉÇÑ µ¥ÀÌÅÍ´Â ¿øº»À» ÆÄÀϽýºÅÛ¿¡ º°µµ·Î ÀúÀåÇÑ´Ù. ÀÌ ¸ðµâÀº ´ÙÀ½°ú °°Àº Ŭ·¡½º·Î ±¸¼ºµÈ´Ù.
typedef struct _pageinfo 
{ 
   char url[80]; 
   char page[1024]; 
} pageinfo; 
 
class Parser 
{ 
    private: 
        set<string> mdata; 
        set<string> pageUrl; 
        pageinfo Pinfo; 
         
    public: 
        Parser(); 
        ~Parser(); 
        set<string> Rp(string); 
        char * RemoveChosa(char *word); 
        set<string> UrlInfo(); 
        pageinfo GetPinfo(); 
        int SplitUrl(string *); 
}; 
 

1 set<string> mdata ÆÄ½ÌµÈ ´Ü¾î°¡ ÀúÀåµÈ´Ù.
2 set<string> pageUrl ¸µÅ© Á¤º¸°¡ ÀúÀåµÈ´Ù.
3 pageinfo Pinfo ¸µÅ© Á¤º¸±¸Á¶Ã¼

  1. À妽ºµÈ ´Ü¾î°¡ ÀúÀåµÈ´Ù.
  2. ¸¸µé°íÀÚ ÇÏ´Â °Ë»ö¿£ÁøÀº ¸µÅ©¸¦ ÀÌ¿ëÇØ¼­ ÆäÀÌÁö µ¥ÀÌÅ͸¦ ÀоîµéÀδÙ. ±×·¯¹Ç·Î ÆäÀÌÁö¸¦ ÆÄ½ÌÇÒ¶§ Ưº°È÷ urlÁ¤º¸´Â µû·Î ÀڷᱸÁ¶¿¡ ÀúÀåÇØµÎ¾î¾ß ÇÑ´Ù.
  3. ÀúÀåµÇ´Â ¸µÅ©Á¤º¸´Â URL°ú page·Î ³ª´©¾î¼­ ÀúÀåµÈ´Ù.
¿¹) 
<a href=http://www.joinc.co.kr/modules/index.php&id=10> 
pageinfo.url   = www.joinc.co.kr  
pageinfo.page  = modules/index.php&id=10  
 

6.3.1 Set<string> Parser::Rp(string data)

ÆäÀÌÁö¸¦ Àоîµé¿©¼­ ÆÄ½ÌÇÑ´Ù. ÆÄ½ÌÀº ´ÙÀ½°ú °°Àº ÇÁ·Î¼¼½º·Î ÁøÇàµÈ´Ù.
while(´Ü¾î ±æÀÌ ¸¸Å­) 
{ 
   ¸¸¾à "<"¸¦ ¸¸³­´Ù¸é ">"À§Ä¡¸¦ ÆÄ¾ÇÇØ¼­ Å×±×ÀÎÁö ¾Æ´ÑÁö ÆÇ´ÜÇÑ´Ù.  
   ¿µ¹®/ÇѱÛÀÌ ¾Æ´Ñ Ư¼ö¹®ÀÚÀÇ °æ¿ì ¸ðµÎ ġȯÇÑ´Ù.  
   \t, \r, \nµîÀ» ±âÁØÀ¸·Î ´Ü¾î·Î Âɰµ´Ù. 
   Âɰ³Áø ´Ü¾îÀÇ ±æÀ̰¡ 4ÀÌ»óÀ̸é '''mdata'''¿¡ µî·ÏÇÑ´Ù.   
} 
 

6.3.2 int Parser::SplitUrl(string *tag)

hrefÅ×±×·Î Á¤ÀǵǴ ¸µÅ©µ¥ÀÌÅÍ ¹®ÀÚ¿­ÀÌ µé¾î¿ÔÀ» ¶§ À̸¦ URL°ú ÆäÀÌÁö·Î ºÐ¸®ÇÏ°í ºÎÁ¤È®ÇÑ ¸µÅ©¿Í ¿äûºÒ°¡´ÉÇÑ ¸µÅ©´Â Á¦°ÅÇÑ´Ù. ¿¹¸¦ µé¾î mailto:, ftp:µîÀº ¹ö¸°´Ù.

´ÙÀ½Àº ´ë·«ÀûÀÎ ÄÚµåÀÌ´Ù.

¸®ÅϰªÀº ÁÖ¾îÁø ¸µÅ©µ¥ÀÌÅÍ tagÀÇ ºÐ¼®°á°ú´Ù. À߸øµÈ ¸µÅ©µéÀÇ °æ¿ì¿¡´Â -1À» ±×·¸Áö ¾ÊÀ» °æ¿ì 1À» ¸®ÅÏÇÑ´Ù.
int Parser::SplitUrl(string *tag) 
{ 
    // a href="http://www.join.co.kr" 
    // a href='http://www.joinc.co.kr' 
    // ó·³ ±¸¼ºµÇ´Â °æ¿ì°¡ ÀÖ´Ù. À̶§ ",'¸¦ Á¦°ÅÇØÁØ´Ù. 
    if(tag->find("\"") == 0) 
        *tag = tag->substr(1, tag->find("\"", 1) -1); 
    if(tag->find("'") == 0) 
        *tag = tag->substr(1, tag->find("'", 1) -1); 
 
    // anchor´Â ¹«½ÃÇÑ´Ù. 
    if (tag->find("#") == 0) 
    { 
        return -1; 
    } 
    // ftp´Â ¹«½ÃÇÑ´Ù. 
    if (strncmp(tag->c_str(), "ftp:", 4) == 0) 
    { 
        return -1; 
    } 
    // mailµµ ¹«½ÃÇÑ´Ù.  
    if (strncmp(tag->c_str(), "mailto:", 7) == 0) 
    { 
        return -1; 
    } 
 
    // ÀϹÝÀûÀ¸·Î ¸µÅ©´Â a href=http://www.joinc.co.kr.. °ú°°Àº Çü½ÄÀÌÁö¸¸ 
    // a href=www.joinc.co.kr..°ú °°ÀÌ ±¸¼ºµÉ ¼öµµ ÀÖ´Ù.  
    // ÈÄÀÚÀÇ °æ¿ì À߸øµÈ ¸µÅ©Á¤º¸Áö¸¸ ²Ï ¸¹Àº ¸µÅ©°¡ ÈÄÀÚó·³ ±â¼úµÇ¹Ç·Î  
    // À̸¦ ó¸®Çϵµ·Ï ÇÑ´Ù.  
    if (strncmp(tag->c_str(), "http:", 5) == 0) 
    { 
        if(strncmp(tag->c_str()+5, "//", 2) == 0)  
            sscanf(tag->c_str(), "%[^:]%[:]%[^a-zA-Z0-9]%[^/]%s",  
                 null,null, null, Pinfo.url, Pinfo.page); 
        else 
            sscanf(tag->c_str(), "%[^:]%[:]%[^/]%s",  
                 null, null, Pinfo.url, Pinfo.page); 
        return 0; 
    } 
    return 1; 
} 
 


6.3.3 char *Parser::RemoveChosa(char *word)

ÁÖ¾îÁø ´Ü¾î word¿¡¼­ Á¶»ç¸¦ Á¦°ÅÇÑ´Ù. Á¶»çÀÇ ¸ñ·ÏÀº (º¯°æ°¡´ÉÇÏ´Ù)´ÙÀ½°ú °°ÀÌ ÁÖ¾îÁú °ÍÀÌ´Ù.
char *chosa[] ={"ÀÖ½À´Ï´Ù","±×·¯¹Ç·Î","¿Ö³ÄÇϸé", 
                "±×·¡¼­", "±×¸®°í",  "¿Ö³Ä¸é", "ÀÔ´Ï´Ù", "À̹ǷÎ", 
                "¿¡¼­", "ó·³", "º¸´Ù", "·Î¼­", "·Î½á", "±îÁö", 
                "ÇÑ´Ù", "Çϰí", "¿¡°Ô","Çϱâ", "ÇÏ´Â", "ºÎÅÍ", 
                "¿Í", "À»","¸¦", "Àº","´Â", "ÀÌ", "°¡", "ÀÇ", "µî", "¿¡", 
                "ÇÑ", 
                NULL}; 
 
À§ ¹è¿­¿¡´Â Á¶»ç »Ó¸¸ ¾Æ´Ï¶ó Á¢¼Ó»çµî Á¦°ÅÇØµµ µÇ´Â ¸ðµç ´Ü¾î ¸ñ·ÏÀÌ µé¾î°¥ ¼ö ÀÖ´Ù. ´Ü¾î¸¦ µî·ÏÇÒ ¶§´Â ±æÀ̰¡ °¡Àå ±ä°ÍºÎÅÍ µî·ÏÇϵµ·Ï ÇÑ´Ù. ´ÙÀ½Àº Á¶»ç¸¦ Á¦°ÅÇϱâ À§ÇÑ ´ë·«ÀûÀÎ ÄÚµå´Ù.
char *Parser::RemoveChosa(char *word) 
{ 
    char *cl; 
    int i = 0, j;  
    vector<int> llist; 
    while((cl = *(chosa +i)) != NULL) 
    { 
        for (j = 0; j < llist.size(); j++) 
        { 
            if (llist[j] == i) 
                goto La; 
        } 
        if(strlen(word) >= strlen(cl))  
        {        
            if (strcmp(cl, word+(strlen(word)-strlen(cl))) == 0) 
            {    
                cout << "Á¶»ç ¹ß°ß" << word <<endl; 
                word[strlen(word)-strlen(cl)] = 0x00; 
                llist.push_back(i); 
                i = 0; 
            } 
        } 
La: 
        i++; 
    } 
    cout << "¸®ÅϰªÀº " << word << endl; 
    if (strlen(word) == 0) 
        word = NULL; 
    return word; 
} 
 
À§ÀÇ Äڵ带 º¸¸é Á¶»ç·Î ÆÇ´ÜµÇ´Â ¹®ÀÚ°¡ ´õÀÌ»ó ¹ß»ýÇÏÁö ¾ÊÀ» ¶§±îÁö chosa¹è¿­À» ¼øÈ¯Çϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾îÇб³¿¡¼­, Çб³¿¡¼­´Â°ú °°Àº ´Ü¾î°¡ ÀÖ´Ù¸é Çѹø¸¸ ¼øÈ¯ÇÏ°Ô µÉ°æ¿ì ÀüÀÚÀÇ °æ¿ì Çб³·Î ³ª¿ÀÁö¸¸ ÈÄÀÚÀÇ °æ¿ì´ÜÁö ´Â¸¸ Á¦°Å µÇ±â ¶§¹®¿¡ Çб³¿¡¼­°¡ ´Ü¾î·Î ¸®ÅϵǴ °Í°ú °°Àº ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î ´õÀÌ»ó Á¶»ç·Î ÆÇ´ÜµÇ´Â°Ô ¹ß°ßµÇÁö ¾ÊÀ» ¶§±îÁö ¼øÈ¯ÇÒ Çʿ䰡 ÀÖ´Ù.

ÀÌ¹Ì °Ë»çÇÑ Á¶»ç´Â ´Ù½Ã °Ë»çÇÒ Çʿ䰡 ¾øÀ¸¹Ç·Î llist¿¡ ³Ö¾î¼­ µû·Î °ü¸®ÇÑ´Ù.
  • À§ÀÇ °æ¿ì ¹®Á¦°¡ ÀÖ´Ù. ¼öÀºÀ» ¿¹·Î µé¾îº¸¸é, ¼öÀº¿¡¼­¶ó´Â ´Ü¾î°¡ ÀÖ´Ù°í ÇÒ ¶§ À§ÀÇ ¹æ½ÄÀ¸·Î¸¸ ÇÑ´Ù¸é ¿¡¼­¿Í ÀºÀÌ ¸ðµÎ Á¦°ÅµÇ¾î ¹ö¸®´Â ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ÀÌ ¹®Á¦´Â ´çºÐ°£ ¹«½ÃÇÑ´Ù.

6.4 DB Indexing

ÀÌ ¸ðµâÀº Parser::Rp·ÎºÎÅÍ Parser¸ðµâ¿¡¼­ ¸¸µé¾îÁø ´Ü¾î¸ñ·Ï°ú URL°ú ÆäÀÌÁö °æ·ÎµîÀ» ÀÌ¿ëÇØ¼­ DB¿Í FILE½Ã½ºÅÛ¿¡ ÀúÀåÇÑ´Ù.

´ÙÀ½Àº ´ë·«ÀûÀÎ ÇÁ·Î¼¼½º´Ù.
 
int main() 
{ 
  sql ¼­¹ö¿¡ ¿¬°á 
  { 
    jsearch_url_index Å×ÀÌºí¿¡ URLÀÌ µî·ÏµÇ¾î ÀÖ´ÂÁö È®ÀÎÇÑ´Ù.  
    ¸¸¾à µî·ÏµÇ¾î ÀÖÁö ¾Ê´Ù¸é  
    { 
      DB¿¡ ÀúÀå {jui | url}  
    } 
    
    jsearch_page_index Å×ÀÌºí³»¿¡ ÆäÀÌÁö °æ·Î°¡ µî·ÏµÇ¾î ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. 
    ¸¸¾à µî·ÏµÇ¾î ÀÖÁö ¾Ê´Ù¸é  
    { 
      DB¿¡ ÀúÀå {jui | upi | page °æ·Î}  
    } 
 
    jui¿Í jpi¸¦ ¾ò¾î¿Â´Ù.  
  } 
  ¸¸¾à ÆäÀÌÁöÀÇ contenttypeÀÌ text/html ȤÀº text/plain À̶ó¸é  
  { 
     ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀúÀåÇÑ´Ù.   
     ÀúÀå °æ·Î´Â prefix_dir/jui/jpi 
 
     DB¿¡ ÀúÀåÇÑ´Ù.{´Ü¾î | jui | jpi | contenttype | time}  
  } 
} 
 

6.5 DB Å×À̺í Á¤º¸

¿©±â¿¡¼­´Â ´Ü¾î À妽º¿Í URL, ÆäÀÌÁö °æ·ÎÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ Å×ÀÌºí¿¡ ´ëÇØ¼­ ¼³¸íÇÑ´Ù. ÇÁ·ÎÅäŸÀÔÀÌ¸ç ½ÇÁ¦ ÄÚµù¿¡¼­´Â Çʿ信 µû¶ó º¯°æµÉ ¼ö ÀÖ´Ù.

6.5.1 jsearch_url_index

ÀÌ Å×ÀÌºí¿¡´Â URLµé¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î°£´Ù. ÇöÀç ´Ü°è¿¡¼­´Â ´ÜÁö joinc.co.krÀÇ ÄÁÅÙÃ÷¸¸À» À妽ºÇϹǷΠÇÊ¿ä ¾ø´Â Å×À̺íÀ̶ó°í º¼¼öµµ ÀÖÁö¸¸ È®ÀåÀ» À§Çؼ­´Â ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù.
Field Type NULL Key Default Extra
ID int PRI auto_increment
URL varchar(80)

  • ID : URL¿¡ ´ëÇÑ À¯ÀÏÇÑ ¹øÈ£
  • URL : ½ÇÁ¦ URL À̸§

  • 6.5.2 jsearch_page_index

    ÀÌ Å×ÀÌºí¿¡´Â ÆäÀÌÁö °æ·Î°¡ µé¾î°£´Ù ÆäÀÌÁö °æ·Î´Â URL¿¡ ´ëÇØ¼­ À¯ÀÏÇÏ°Ô µÇ¹Ç·Î jsearch_url_indexÅ×À̺íÀ» ÂüÁ¶ÇÑ´Ù.
    Field Type NULL Key Default Extra
    ID int PRI auto_increment
    UID int
    Page varchar(256) PRI
  • ID : ÆäÀÌÁö°¡ Á¸ÀçÇÏ´Â URL¿¡´ëÇÑ ID
  • UID : ÆäÀÌÁö¿¡ ´ëÇÑ À¯ÀÏÇÑ ¹øÈ£
  • Page : ÆäÀÌÁöÀÇ °æ·Î¸¦ Æ÷ÇÔÇÑ ½ÇÁ¦ À̸§, ¿äû ¹®ÀÚ¿­±îÁö Æ÷ÇÔÇÑ´Ù.

  • 6.5.3 jsearch_word_index


    7 Àâ´ãµé

    1. [http]html ÆÄ¼­µé
    2. http://database.sarang.net/?inc=read&aid=5125&criteria=pgsql&subcrit=qna&id=&limit=20&keyword=&page=
    EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.