2.5 ¹®¼­¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ¹æ¹ý

GET_DOCUMENTS_FROM_RESULT
GET_DOCUMENTS_WITH_IDS
GET_DOCUMETS_WITH_PRIMARY_KEY
GET_DOCUMENT_ID_WITH_DOCUMENT
¹®¼­ ¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ¹æ¹ý

"¹®¼­¿ä¾à"Àº ÇÑ ¼½¼ÇÀÇ Å©±â°¡ Ä¿¼­ ³»¿ëÀ» ÁÙÀ̰ųª, ÁúÀǾ ¸¹ÀÌ Æ÷ÇԵǾî ÀÖ´Â ÀϺκи¸À» ÇÊ¿ä·Î ÇÒ ¶§ »ç¿ëÇÑ´Ù.
"ÇÏÀ̶óÀÌÆÃ"Àº ¹®¼­ÀÇ ³»¿ë Áß "ÁúÀǾî" ºÎºÐÀ» ¹ÝÀü½Ãų ¶§ »ç¿ëÇÑ´Ù.
»ó±â µÎ ±â´ÉÀº GET_DOCUMENTS_FROM_RESULT¿Í GET_DOCUMENTS_WITH_IDSÀÇ È®Àå±â´ÉÀ¸·Î »ç¿ëµÈ´Ù.

°ü·Ã ±¸Á¶Ã¼

¾Æ·¡ÀÇ ±¸Á¶Ã¼´Â "¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ"À» ¼¼ÆÃÇϱâ À§ÇÑ ±¸Á¶Ã¼ÀÇ ÀϺÎÀÌ´Ù.
"¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ"À» ¿øÇÏ´Â ¼½¼Ç´ç ÇϳªÀÇ ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.
class Cdisplay_t
{
    public:
        string section_name; [¿ä¾àÀ̳ª ÇÏÀ̶óÀÌÆÃÀ» ¿øÇÏ´Â ¼½¼ÇÀ̸§]
		int highlight_method; 
			// NONE : ÇÏÀ̶óÀÌÆÃ ÇÏÁö ¾ÊÀ½(¿ä¾à¸¸ ÇÒ ¶§ »ç¿ë) 
			// INSERTING_TAG_EACH : ÁúÀǾî¿Í ÀÏÄ¡ÇÏ´Â ¼½¼Ç¸¸ ÇÏÀ̶óÀÌÆÃ ÅÂ±× »ðÀÔ
			// INSERTING_TAG_ALL  : ÁúÀǾî¿Í ¹«°üÇÏ°Ô ¸ðµç ¼½¼ÇÀ» ÇÏÀ̶óÀÌÆÃ ÅÂ±× »ðÀÔ
			// LISTING_LOCATION_EACH] : ÁúÀǾî¿Í ÀÏÄ¡ÇÏ´Â ¼½¼Ç¸¸ ÇÏÀ̶óÀÌÆÃ À§Ä¡ ÀúÀå
			// LISTING_LOCATION_ALL] : ÁúÀǾî¿Í ¹«°üÇÏ°Ô ¸ðµç ¼½¼Ç¿¡ ´ëÇÑ ÇÏÀ̶óÀÌÆÃ À§Ä¡ ÀúÀå
		string start_tag;  [INSERTING_TAG_* ¼±Åýÿ¡¸¸ »ç¿ë]
		string end_tag;    [INSERTING_TAG_* ¼±Åýÿ¡¸¸ »ç¿ë]
		int summary_method; 
			// NONE : ¿ä¾à »ç¿ëÇÏÁö ¾ÊÀ½
			// NORMAL_SUMMARY : ÀÌ ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÔ
			// SPECIAL_SUMMARY : ÇöÀç »ç¿ëµÇÁö ¾Ê´Â ¿É¼Ç 
		unsigned int summary_length; [¿ä¾àµÇ´Â ¹®¼­ ±æÀÌ]
		....
};
ÁÖÀÇ : java¿¡¼­´Â Cdisplay_t ´ë½Å¿¡ DisplayType Ŭ·¡½º¸¦ »ç¿ëÇØ¾ß Çϰí,
       Á¤ÀÇµÈ »ó¼ö¾Õ¿¡ KristalHeader¸¦ ºÙ¿©¾ß ÇÑ´Ù.
	   ¿¹) INSERTING_TAG_EACH ===> KristalHeader.INSERTING_TAG_ALL
GET_DOCUMENTS_FROM_RESULT³ª GET_DOCUMENTS_WITH_IDS¿¡¼­ À§ ±¸Á¶Ã¼¿¡ ´ëÇÑ ¾Æ¹« ¼¼ÆÃµµ ÇÏÁö ¾Ê´Â´Ù¸é "¿ä¾à"°ú "ÇÏÀ̶óÀÌÆÃ"Àº ¼öÇàµÇÁö ¾Ê´Â´Ù.
"ÇÏÀ̶óÀÌÆÃ"¸¸ ¼öÇàÇÏ·Á¸é summary_method¿¡ NONEÀ» ÇÒ´çÇϰí, "¿ä¾à"¸¸ ¼öÇàÇÏ·Á¸é highlight_method¿¡ NONEÀ» ÇÒ´çÇÑ´Ù.
highlight_method¿¡¼­ LISTING_LOCATION_EACH¿Í LISTING_LOCATION_ALLÀº "ÁúÀǾî"°¡ ¹ß°ßµÈ À§Ä¡Á¤º¸¸¦ ¹ÝȯÇÏ´Â ÇÁ·ÎÅäÄݷνá, ÀϹÝÀûÀÎ ÀÀ¿ë¿¡¼­ »ç¿ëÇϱ⠰ï¶õÇϹǷΠ¿©±â¼­´Â ¼³¸íÀ» ÇÏÁö ¾Ê´Â´Ù.

LISTING_LOCATION_EACH´Â "ÁúÀǾî"¿¡ Á¾¼ÓµÈ °á°ú¸¦ °®°Ô µÈ´Ù. ¸ðµç ¼½¼Ç¿¡ "ÇÏÀ̶óÀÌÆÃ"À» LISTING_LOCATION_EACH·Î ÁöÁ¤ÇÑ °æ¿ì, ÁúÀǾ ((TIK : Á¤º¸) & (ABS : °Ë»ö)) À̾ú´Ù¸é, TIK¼½¼Ç¿¡¼­´Â "Á¤º¸"¶ó´Â ´Ü¾î¸¸ ÇÏÀ̶óÀÌÆÃ µÇ°í, ABS ¼½¼Ç¿¡¼­´Â "°Ë»ö"À̶ó´Â ´Ü¾î¸¸ ÇÏÀ̶óÀÌÆÃ µÈ´Ù. ³ª¸ÓÁö ¼½¼ÇµéÀº ÇÏÀ̶óÀÌÆÃÀÌ Àû¿ëµÇÁö ¾Ê´Â´Ù

LISTING_LOCATION_ALL¸¦ »ç¿ëÇß´Ù¸é "Á¤º¸","°Ë»ö"À̶ó´Â ´Ü¾î¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ¸ðµç ¼½¼ÇÀÌ ÇÏÀ̶óÀÌÆÃ µÈ´Ù.

¼­µÎ¿¡¼­ ¾ð±ÞÇÑ °Íó·³ "¿ä¾à" ¹× "ÇÏÀ̶óÀÌÆÃ"Àº GET_DOCUMENTS_FROM_RESULT¿Í GET_DOCUMENTS_WITH_IDS ÇÁ·ÎÅäÄÝ¿¡¼­ Ãß°¡ÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ½ÄÀ¸·Î, µÎ ÇÁ·ÎÅäÄÝ¿¡¼­ ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ¸¹Ç·Î ³ª´©¾î¼­ ¼³¸íÇÑ´Ù.

GET_DOCUMENTS_FROM_RESULT¿¡¼­ÀÇ »ç¿ë ¹æ¹ý

InParameter

vector displays; [¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ¹æ½Ä ¼¼ÆÃÀ» À§ÇÑ ±¸Á¶Ã¼]
unsigned int set_id; [¼Â¹øÈ£]
unsigned int start_position; [½ÃÀÛÀ§Ä¡]
unsigned int counter;  [¹®¼­°³¼ö]
vector section_namelist; [°¡Á®¿Ã ¼½¼Ç(µé)]

OutParameter

vector documents; [¹®¼­¸®½ºÆ®]
long unsigned int service_time; [½ÇÇà½Ã°£]

Example

    vector section_namelist;    // °£·«º¸±â¿¡¼­ Ãâ·ÂÇÒ ¼½¼Ç¸í

    // ¿äûÀ» ó¸®ÇÒ Å¬·¡½º¸¦ »ý¼º
    // »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö·Î ó¸®ÇÒ DB ¼­ºñ½ºÀÇ ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ ÀÔ·Â
    ClientLIB clientLib(SERVER_IP, SERVER_PORT);
    Cparameter_t p_in, p_out;               // ¸Å°³º¯¼ö Ŭ·¡½º ¼±¾ð 

    int doc_num = 10;       // 10°³ ¹®¼­ Ãâ·Â 
    unsigned int start_pos = 0;         // ½ÃÀÛ ¹®¼­ÀÇ offset
    //section_namelist.push_back("TIK");    // Ãâ·ÂÇÒ ¼½¼Ç¸®½ºÆ®(Ãß°¡ ÁöÁ¤ °¡´É)
    section_namelist.push_back(ALL_SECTIONS);   // Ãâ·ÂÇÒ ¼½¼Ç¸®½ºÆ®(Àüü¼½¼Ç)

    p_in.set_id = 1;                   // ¼Â ½Äº°ÀÚ ÁöÁ¤
    p_in.start_position = start_pos;        // °¡Á®¿Ã ½ÃÀÛ À§Ä¡ ÁöÁ¤
    p_in.counter = 1;                       // °¡Á®¿Ã ¹®¼­ °³¼ö ÁöÁ¤
    p_in.section_namelist = section_namelist;   // Ãâ·ÂÇÒ ¼½¼Ç À̸§ ÁöÁ¤

    // ¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ÁöÁ¤
    Cdisplay_t adisplay;

    adisplay.section_name = "TIK";	// ¼½¼Ç ÁöÁ¤
    adisplay.highlight_method = INSERTING_TAG_EACH; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ý ÁöÁ¤
    adisplay.start_tag = "<font color=red>"; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ýÀÌ INSERTING_TAG_* ÀÎ °æ¿ì¿¡¸¸ ÁöÁ¤
    adisplay.end_tag = "</font>"; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ýÀÌ INSERTING_TAG_* ÀÎ °æ¿ì¿¡¸¸ ÁöÁ¤
    adisplay.summary_method = NORMAL_SUMMARY; // ¿ä¾à ¹æ¹ý ÁöÁ¤
    adisplay.summary_length = 32; // ¿ä¾à ±æÀÌ

    p_in.displays.push_back(adisplay);

    // °Ë»ö °á°ú ¹®¼­ °¡Á®¿À±â
    RedirectStdoutInit();   // ¿äû ¼öÇà Áß¿¡ Ãâ·ÂµÇ´Â ¸Þ½ÃÁö ¸·À½...
    ret_val = clientLib.Request("GET_DOCUMENTS_FROM_RESULT", p_in, p_out);
    RedirectStdoutClose();
    if (ret_val != 0) {
        cout << "ERROR : " << p_out.errmsg << "(" << p_out.errcode << ")" << endl;
        return -1;
    }

GET_DOCUMENTS_WITH_IDS¿¡¼­ÀÇ »ç¿ë ¹æ¹ý

InParameter

vector displays; [¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ¹æ½Ä ¼¼ÆÃÀ» À§ÇÑ ±¸Á¶Ã¼]
unsigned int set_id; [¼Â¹øÈ£ : À§ displays¸¦ ¼¼ÆÃÇÑ °æ¿ì¿¡¸¸ »ç¿ëµÈ´Ù]
vector documents; [°¡Á®¿Ã ¹®¼­(µé)ÀÇ Å×À̺í½Äº°ÀÚ¿Í ¹®¼­½Äº°ÀÚ ¼¼ÆÃ]
vector section_namelist; [°¡Á®¿Ã ¼½¼Ç(µé)]

OutParameter

vector documents; [°¡Á®¿Â ¹®¼­(µé)]
long unsigned int service_time; [½ÇÇà½Ã°£]

Example

    // ÀоîµéÀÏ ¼½¼Ç ÁöÁ¤(Àüü¸¦ ÁöÁ¤ÇÏ·Á¸é ALL_SECTIONS¸¦ »ç¿ë)
    //section_namelist.push_back("TIK");
    section_namelist.push_back(ALL_SECTIONS);   // Àüü ¼½¼Ç ÁöÁ¤

    // »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö·Î ó¸®ÇÒ DB ¼­ºñ½ºÀÇ ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ ÀÔ·Â
    ClientLIB clientLib(SERVER_IP, SERVER_PORT);

    Cparameter_t p_in, p_out;   // ¸Å°³º¯¼ö Ŭ·¡½º ¼±¾ð 

    Cdocument_t doc;
    doc.table_id = table_id;        // Å×ÀÌºí ½Äº°ÀÚ
    doc.document_id = doc_id;       // ¹®¼­ ½Äº°ÀÚ
    p_in.documents.push_back(doc);

    p_in.section_namelist = section_namelist;

    p_in.set_id = 1;	// ¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃÀ» À§Çؼ­ "¼Â¹øÈ£"°¡ ÇÊ¿äÇÔ

    // ¿ä¾à ¹× ÇÏÀ̶óÀÌÆÃ ÁöÁ¤
    Cdisplay_t adisplay;

    adisplay.section_name = "TIK";  // ¼½¼Ç ÁöÁ¤
    adisplay.highlight_method = INSERTING_TAG_EACH; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ý ÁöÁ¤
    adisplay.start_tag = "<font color=red>"; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ýÀÌ INSERTIN G_TAG_* ÀÎ °æ¿ì¿¡¸¸ ÁöÁ¤
    adisplay.end_tag = "</font>"; // ÇÏÀ̶óÀÌÆÃ ¹æ¹ýÀÌ INSERTING_TAG_* ÀÎ °æ¿ì¿¡¸¸ ÁöÁ¤
    adisplay.summary_method = NORMAL_SUMMARY; // ¿ä¾à ¹æ¹ý ÁöÁ¤
    adisplay.summary_length = 32; // ¿ä¾à ±æÀÌ

    p_in.displays.push_back(adisplay);

    // ¹®¼­ °¡Á®¿À±â
    RedirectStdoutInit();   // ¿äû ¼öÇà Áß¿¡ Ãâ·ÂµÇ´Â ¸Þ½ÃÁö ¸·À½...
    int ret_val = clientLib.Request(GET_DOCUMENTS_WITH_IDS, p_in, p_out);
    RedirectStdoutClose();
    if (ret_val != 0) {
        cout << "ERROR : " << p_out.errmsg << "(" << p_out.errcode << ")" << endl;
        return -1;
    }